如何发布一个npm包
背景
应公司发展需要,需要把目前我们所用的编辑器,进行封装开源。如我们所知进行开源的项目封装和我们平时所写的项目和业务还是有所区别的,所以花了一点时间去了解相关写法。
目录结构
1 | │ .babelrc |
项目依赖
一般情况下,我们写 React 项目,用 create-react-app 脚手架开发比较方便,但是如果要写一个插件的话,用三方脚手架就显得有点臃肿了,所以我们这里需要自己配置一个开发打包工具。我的package.json文件配置如下
1 | { |
webpack配置
webpack.base.config.js
1 | /* |
webpack.dev.config.js
1 | /* |
webpack.prod.config.js
1 | /* |
注意:
- entry的入口文件位置,由开发环境的src/index.js改成了组件的出口src/components/index.js,表示此处只负责输出组件。
- output的libraryTarget需要为commonjs2。
- 通过nodeExternals()将打包组件内的react等依赖给去除了,减小了包的体积,在引用该包时,只要其环境下有相关包,就可以正常使用。
调试验证
在上传到npm 之前我们需要验证自己的组件在打包过后是否可以使用。
第一步:打包 npm run build
第二步: 在组件项目的根目录下运行 npm link
将组件映射到本地库
第三步:进入案例demo文件夹下,运行 npm link 包名
然后修改引入方式
如果项目正常运行则表示成功,反之则存在问题
发布到npm
准备npm账号,npm官网地址:https://www.npmjs.com/
在组件的项目根目录下登录npm
1 | npm login |
按照提示输入username、password、email
登录后,可以通过npm whoami来查看登录用户信息
1 | npm whoami |
- 发布组件到npm上
1 | npm run pub |