npm publish的坑
Contents
目前工作是在做基础数据的SDK。SDK做为全公司学习数据的基础功能,抽离成公共依赖,发布到公司的npm的私库。
最近更新版本,发现业务加载不到依赖。
破案流程回顾:
先来,tl’dr;
npm publish的时候会读 .npmignore
,如果不存在就去读 .gitignore
。最后创建了一个空的.npmignore
,问题解决。(坑!)
入口
查 package.json 指定的入口
|
|
发现业务依赖加载是需要拿到 dist内的index做为入口。
业务依赖是否存在
发现了,确实不存在dist
文件夹.
打包问题吗?
在本地和CI的打包是存在 dist
的。那是为什么呢?
关键点
发现ci上的log有些异常, 执行publish后,并没有推dist到npm私库上。
解决与本质:
在stackoverflow上找到来对应的答案,这里 以及npm官方的 这里
在发布npm包的时候,publish的内容大概会经过这几个步骤:
-
查找
package.json
里的files
字段,比如"files": ["dist/*.js", "dist/**/&.js]
,就会发布dist的js文件。 -
如果没有
package.json
的files
字段,就根据.npmignore
,排除掉不需要publish的文件,如果这个文件内容是空的,就是不排除特定文件。 -
如果没有
.npmignore
,但是有.gitignore
,就会根据.gitignore
排除掉不需要publish的文件。
刚好我这里就踩坑了,当初.gitignore
加上dist,这样可以避免dist被提交到git,但是即没有在package.json
指定文件也没有加上.npmignore
。
最后创建了一个空的.npmignore
,问题解决。
-EOF-