我正在尝试将包发布到npm
,由于某种原因,我在.js
中定义的package.json
未包含在包中。我的项目是用typescript
编写的,我通过以下npm脚本进行编译......
"prepublishOnly": "tsc -p ./ --outDir dist/"
在本地正确输出我期望dist/app.js
的文件。然后我会发布npm publish
并发布readme.md
和其他一些文件,但不会发布我期望的app.js
。 package.json
主要设置为dist/app.js
所以我在这里缺少什么?
这是我的第一个npm包发布,所以它可能是愚蠢的,很高兴尝试任何想法。
答案 0 :(得分:4)
问题很可能是因为你有一个.gitignore
文件,如果找不到.npmignore
文件,npm将尊重该文件。我猜你是否遇到了上述问题,或许忽略了源代码管理中的/dist
?
如果没有.npmignore文件,但有一个.gitignore文件,那么 npm将忽略.gitignore文件匹配的内容
main
实际上并不会决定打包的内容......
主要字段是模块ID,它是您的主要入口点 程序。也就是说,如果您的包名为foo,并且用户安装 它,然后需要(" foo"),然后你的主要模块的出口 对象将被退回。
此外,打包文件可以通过files
"files": ["dist/app.js", "/and/others/"]
最后,如果您查看npm/issues/3571,只需添加一个空的.npmignore
文件即可解决此问题。
如果您想要包含
.gitignore
排除的内容 文件,您可以创建一个空的.npmignore
文件来覆盖它。
专业提示 - 您可以在本地运行npm pack
,这将执行发布的所有生命周期挂钩,并为您提供.tgz
包,就好像它是从npm获取的一样。您可以解压缩此内容以检查内容。我发现这在很多场合都非常有用,可以模仿发布而不会实际发布。