NPMJS发布公共包
之前利用公司的nexus发布了一些公司级的UI组件库,最近希望能够将自己在项目中总结的TSRules发布到源上,因为不止希望公司项目能够使用,所以决定进行npmjs托管。
这里记录下发布过程
发布步骤
npmjs账户注册
简单略过
GitHub托管
因为需要更新维护,对应做个仓库比较妥当
文件添加
因为我这个项目只是托管tslint.json,所以整体较简单。
注意
- 初始化package.json可以使用
npm init
- 包版本管理,建议使用commitizen,standard-version来进行语义化版本控制
包发布
1 | npm adduser |
执行以上命令即可,当提交发布成功,即可。通过npmjs网站,我们即可看到已发布的包
注意事项
402 Payment Required
这里之所以需要增加--access=public
,因为默认是发布私有包,而NPM私有库是付费的。如果不加该参数,遇到402 Payment Required
发布文件黑白名单
发布包时,经常有这样需求,只想发布制定文件,比如测试文件/编译源文件等,这时就需要有黑白名单指定
- Package.json中files字段进行白名单
- .npmignore进行黑名单
- .gitignore进行黑名单
注意
如果files明确指定,则优先级最高
如果files没有指定,而.npmignore存在,则依据它进行文件排除即可
如果.npmignore也不存在则依据.gitignore进行排除
npm默认发布即会排除node_modules,因此不需要手动排除
这里之所以提到存在,是因为空文件也视为生效
package-json.lock
或者yarn.lock
文件在发布时会被忽略,因此如果该包中的依赖包版本不支持修改,需要直接写死。lock文件只有在作为顶级包版本控制时才不会忽视,因此平时项目中lock文件还是要提交,这两点并不矛盾。
写在最后
之前每次更新了规则,需要手动的修改多个库,做到同步化,纯粹是繁琐的体力劳动。这样一来,只需要更新rule的包版本即可,每个项目下并不需要直接去维护rule规则,同时因为有了版本,也可以保证了差异性的存在。酷!