发布到npm,`main`中定义的文件不会被发布
我试图发布一个包到npm
,由于某些原因,我在package.json
定义的.js
不包含在包中。 我的项目是在typescript
和我transpile通过下面的npm脚本…
"prepublishOnly": "tsc -p ./ --outDir dist/"
哪个正确地输出文件我希望本地dist/app.js
然后我做一个npm publish
和readme.md
和其他一些文件发布,但不是我期望的readme.md
package.json
的主要设置为dist/app.js
所以我在这里丢失了什么?
这是我的第一个npm包发布,所以它可能是愚蠢的,乐于尝试任何想法。
这个问题很可能是因为你有一个.gitignore
文件,如果找不到.npmignore
文件,那么npm将作为一个备用文件而被尊重。 我猜你正在碰到上面,可能在源代码pipe理中忽略/dist
?
如果没有.npmignore文件,但有一个.gitignore文件,那么npm会忽略.gitignore文件匹配的东西
main
不会实际决定什么内容是包装…
主要字段是模块ID,是您程序的主要入口点。 也就是说,如果你的包被命名为foo,并且用户安装它,然后做require(“foo”),那么你的主模块的exports对象将被返回。
另外,打包文件可以通过files
显式包含
"files": ["dist/app.js", "/and/others/"]
最后,如果你看一眼npm / issues / 3571 ,你可以通过添加一个空的.npmignore
文件来解决这个问题 。
如果你想包含你的
.gitignore
文件排除的内容,你可以创build一个空的.npmignore
文件来覆盖它。
专业提示 – 您可以在本地运行npm pack
,它将执行发布的所有生命周期钩子,并为您提供.tgz
包,就好像它是从npm中获取的一样。 你可以解压缩来检查内容。 我发现这个超级有用的模拟出版物,而没有真正做到这一点。