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


78

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

假设文件名是foo.json,我将其添加到.gitignore文件中foo.json

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

我知道我可以添加.npmignore肯定会忽略该文件的文件,但是如果.gitignore已经执行此操作,则不会添加它。

Answers:


129

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

文档中

使用.npmignore文件将内容拒之门外。如果没有.npmignore文件,但有一个.gitignore文件,然后将NPM忽略由相匹配的东西.gitignore文件。如果包括.gitignore文件中排除的内容,则可以创建一个空.npmignore文件来覆盖它。

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

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

有关放入.npmignore文件内容的更多信息:我是否应该.npmignore我的测试?


1
它有不同的情况,但非常相似,我有一个.gitignore不包含bin/我的反编译ES6应用程序所在目录的目录,因此我可以推送lib/ES6编写的应用程序。但是,您可能会发现,问题在于npm中发布的软件包必须具有bin/
Carlos Araya

3
听起来您需要一个.npmignore包含与以下内容相同的内容的文件,.gitignore但该bin/行已删除。
cmbuckley

我要完全相反。我希望npm添加一个文件夹,尽管它存在于.gitignore中
Lajos Meszaros

@LajosMeszaros第二句话包括:“如果要包括.gitignore文件中排除的内容,则可以创建一个空.npmignore文件来覆盖它。” 在您的情况下,您将需要复制.gitignore.npmignore,并.npmignore仅从中删除文件夹。
cmbuckley

19

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

.gitignore文件中,添加要排除的文件/目录**/build(例如),并在.npmignore文件中确保指定相同的文件/目录,但带有!前缀,因此对于构建示例,应包括!**/build

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.