发布后 npm 模块丢失文件

Posted

技术标签:

【中文标题】发布后 npm 模块丢失文件【英文标题】:npm module missing files after publish 【发布时间】:2018-01-01 10:44:36 【问题描述】:

供参考,repo 为https://github.com/microsoftly/luis-response-builder。

node 模块文件用 tsc 生成并输出到 dist 文件夹。我有一个 prepublishOnly 步骤,它删除 dist 文件夹,运行 tsc,然后针对转译的 js 运行测试。当我发布得很好时,测试通过了。

问题是,当我在其他任何地方安装项目时,dist 文件夹只包含路径为 dist/src/index.js 的文件。

我一生都无法弄清楚为什么文件在安装时丢失,但在发布时却没有。

【问题讨论】:

【参考方案1】:

引用npm-publish Documentation:

如果不存在本地 .gitignore.npmignore 文件,则包含包目录中的所有文件。如果两个文件都存在并且.gitignore 忽略了一个文件,但.npmignore 没有忽略,那么它将被包含。

您的存储库的 .gitignore file 包含以下内容:

node_modules
dist
*.env
yarn-error.log

根据文档,由于 dist 被忽略,它不会与 npm publish 一起提交。

【讨论】:

【参考方案2】:

查看package.json documentation about files

由于您没有包含files 键,它只会包含main 中指定的文件(以及一些其他默认文件)。

files 值是一个数组,因此您可以包含多个文件和/或文件夹。

例如:

files: [
  "dist",
  "config/somefile.js"
]

【讨论】:

你说得对,我似乎错过了他/她的.gitignore 文件。感谢您的澄清。

以上是关于发布后 npm 模块丢失文件的主要内容,如果未能解决你的问题,请参考以下文章

部署到 Heroku 时的本地或私有 NPM 模块

NPM:找不到“npm link”模块后

CSS 更新后 NPM 模块无法导入

如何在不使用 npm 的情况下安装 node.js 模块?

执行“npm install”后安装了太多 npm 模块

在 CPanel 中安装 NPM 模块时出错?