首页 > 其他分享 >如何上传你的组件到npm

如何上传你的组件到npm

时间:2023-03-02 17:36:02浏览次数:47  
标签:npm node babel js webpack 组件 loader 上传

前言

以react为例子
webpack作为打包工具

准备工作

安装node
npm上注册账号 https://www.npmjs.com/

创建要上传组件

新建项目

生成package.json文件

npm init

安装依赖

npm i -D webpack webpack-cli @babel/core @babel/preset-env @babel/preset-react @babel-loader css-loader style-loader html-webpack-plugin webpack-dev-server clean-webpack-plugin webpack-node-externals

安装失败的,再单独安装

修改package.json文件

image

 "main": "dist/bundle.js",
  "files": [
    "dist/bundle.js"
  ],
  "scripts": {
    "start": "set NODE_ENV='development' && webpack-dev-server",
    "dev": "set NODE_ENV='development' && webpack-dev-server",
    "build": "set NODE_ENV='production' && webpack"
  },

建目录和组件

image

可以放一个public/index.html ,方便查看效果

webpack.config.js
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin"); // 每次构建清除上一次打包出来的文件
const nodeExternals = require("webpack-node-externals");
const plugins = [new CleanWebpackPlugin()]

module.exports = {
  mode: "production",
  entry: "./src/components/index.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "./dist"),
    libraryTarget:"commonjs2" // 包需要被module.exports,这就要用到common
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: "babel-loader",
        exclude: /node_modules/,
      },
      {
        test: /\.css$/,
        use: ["style-loader", "css-loader"],
      },
    ],
  },
  devServer: {
    static: "./dist",
  },
  externals:[nodeExternals()], // nodeExternals 使得打包的组件中不包括任何 node_modules 里面的第三方组件,起到减小体积的作用。
  plugins,
};

组件

image

index.js

image

src/app.js可以写一个运行起来看效果

image

建babelrc和忽略文件

.babelrc

{ "presets": ["@babel/preset-env", "@babel/preset-react"]}

.gitignore

如果上传git 需要
image

避免携带node_modules文件

npm pack    生成tgz文件

.npmignore

image

发布

npm view 【你的npm包名】查看你的包名是否被注册了
npm login 登录 根据提示输入账号、密码、邮箱
npm publish  (注意publish命令只能用npm )

报错看是否是npm源

换源:
npm i -g nrm
nrm current  查看当前源
nrm ls查看自己的源
nrm use npm  切换源

更新

npm version patch
npm publish

标签:npm,node,babel,js,webpack,组件,loader,上传
From: https://www.cnblogs.com/yun10011/p/17172455.html

相关文章

  • 上传相关必备知识点 `<input type="file">`
    上传相关知识点<inputtype="file">带有type="file"的<input>元素允许用户可以从他们的设备中选择一个或多个文件。选择后,这些文件可以使用提交表单的方式上传到服......
  • Web上传文件夹的三种解决方案
    ​ 最近遇见一个需要上传超大大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现。在某些业务中,大文件上传是一个比较重要的......
  • cowtransfer(奶牛快传)自动上传文件脚本—流程分析
    cowtransfer(奶牛快传)自动上传文件脚本—流程分析序言:距离上传发文也有几天了,这几天也是将这个脚本优化了一下。如果还不清楚这个脚本的效果是怎么样的小伙伴可以......
  • Java上传二进制(multipart/form-data)_Demo
    这里做个记录,通过此次问题的解决,弄清POST同时传文件及参数时,底层到底是怎么组成,文件流及参数是怎么分隔组成,及分隔符如何写入流。好,废话不多说,直接上代码,此代码配置好自己......
  • 【npm】npm命令
    root@basic-services:~#npm-lUsage:npm<command>where<command>isoneof:accessnpmaccesspublic[<package>]npmaccessrestr......
  • 【npm】基础
    0、一个项目如果依赖某些npmpackage,那么该项目本身就是一个npmpackage。1、一个npmpackage需要有package.jsonREADME.mdLISCENSE.mdindex.js文件,并且npminit时信息要......
  • 【npm】在Ubuntu1804部署Verdaccio
    1、创建verdaccio系统用户:$sudoadduser--system--gecos'VerdaccioNPMmirror'--group--home/var/lib/verdaccioverdaccio 2、切换到该用户,并且切入该用户的家目......
  • SpringCloud文件夹上传解决方案
    ​ 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对Http协议较模糊,故这次采用渐进的方式来学习文件上传的......
  • vue3注册组件,以及组件之间通信
     注册组件 全局组件 局部组件 递归组件 组件通信 父传子父传递<template><divclass="container"><!--传递数据这里传了一个string和一......
  • 局域网文件夹上传解决方案
    ​ 文件夹数据库处理逻辑public class DbFolder{    JSONObjectroot;       public DbFolder()    {        this.root= new JSON......