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 中列出的文件吗?的主要内容,如果未能解决你的问题,请参考以下文章