NPM 会忽略 .gitignore 中列出的文件吗?

Posted

技术标签:

【中文标题】NPM 会忽略 .gitignore 中列出的文件吗?【英文标题】:Does NPM ignore files listed in .gitignore? 【发布时间】:2014-09-16 12:10:29 【问题描述】:

我有一个由npm install 命令生成的文件(使用preinstall 任务)。我不想将它添加到 git 存储库中,也不想添加到 NPM 项目中。

假设文件名为foo.json,我在.gitignore文件中添加了foo.json

这足以避免将其上传到 NPM 注册表吗?

我知道我可以添加.npmignore 文件,它肯定会忽略该文件,但如果.gitignore 已经这样做了,我不会添加它。

【问题讨论】:

【参考方案1】:

如果项目同时具有.npmignore.gitignore 文件,npm 将使用.npmignore 文件。

来自the documentation:

使用.npmignore 文件将内容保存在您的包裹之外。如果没有.npmignore 文件,但一个.gitignore 文件,那么npm 将忽略.gitignore 文件匹配的内容。如果您想要包含您的.gitignore 文件排除的内容,您可以创建一个空的.npmignore 文件来覆盖它。

简单来说,npm 首选 .npmignore 文件(如果存在),但会退回到 .gitignore 文件。

在许多情况下,Git 和 npm 都可以忽略相同的文件,因此单独使用 .gitignore 文件是有意义的。如果存在差异(即 npm 和 Git 需要忽略不同的文件),那么您需要维护单独的 .gitignore.npmignore 文件。

有关在.npmignore 文件中添加内容的更多信息:Should I .npmignore my tests?

【讨论】:

它有不同的情况,但非常相似,我有一个.gitignore,它不包括我的转编译ES6应用程序所在的目录bin/,所以我可以推送lib/,ES6编写的应用程序.但是,您可能会发现,问题在于 npm 中发布的包必须具有 bin/ 听起来您需要一个包含与.gitignore 相同内容但删除了bin/ 行的.npmignore 文件。 我想要完全相反的。我希望 npm 添加一个文件夹,尽管它存在于 .gitignore @LajosMeszaros 第二句涵盖了这一点:“如果您想包含 .gitignore 文件中排除的内容,您可以创建一个空的 .npmignore 文件来覆盖它。”在您的情况下,您需要将.gitignore 复制到.npmignore,并仅从.npmignore 中删除该文件夹。【参考方案2】:

对于任何阅读这篇文章的人试图忽略来自 git 的文件/目录但希望将其包含在 npm publish 中并尝试使用空的 .npmignore 文件但没有运气。这行得通。

在您的 .gitignore 文件中,添加您希望排除 **/build 的文件/目录,并在您的 .npmignore 文件中确保您指定相同的文件/目录,但使用 ! 前缀,以便构建示例,您将包括 !**/build

【讨论】:

以上是关于NPM 会忽略 .gitignore 中列出的文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

gitignore 忽略文件夹

gitignore忽略提交全局配置

.gitignore

.gitignore使用

使用 .gitignore 忽略 node_modules

ios 忽略文件 .gitignore