【发布时间】:2019-11-24 07:43:48
【问题描述】:
所以我在阅读this。
据我了解,我有点困惑它的工作原理:
如果我的仓库中只有.gitignore,npm 将使用.gitignore,但如果我同时拥有.gitignore 和.npmignore,npm 只会读取.npmignore,对吗?还是两者都读?
需要知道,如果它只读取.npmignore,我还必须从.gitignore 复制粘贴内容。
【问题讨论】:
所以我在阅读this。
据我了解,我有点困惑它的工作原理:
如果我的仓库中只有.gitignore,npm 将使用.gitignore,但如果我同时拥有.gitignore 和.npmignore,npm 只会读取.npmignore,对吗?还是两者都读?
需要知道,如果它只读取.npmignore,我还必须从.gitignore 复制粘贴内容。
【问题讨论】:
或者两个都读
作为mentioned here,它将只读取.npmignore
如果您想包含被您的
.gitignore文件排除的内容,您可以创建一个空.npmignore文件来覆盖它。
虽然,Jeff Dickey 提倡:“For the love of god, don’t use .npmignore”
但是,您可能不知道的是,我添加 npmignore 文件的小动作实际上导致
npm现在查询该文件而不是 gitignore 文件。
这是一个主要问题—现在,我只需添加此.npmignore以隐藏我的测试目录,就将我的所有 AWS 凭证泄露给公众。更糟糕的是,我可能不知道发生了这种情况。
npm publish不显示打包的文件(它实际上在 npm 6 中显示)。
我在 npm 注册表上看不到这些文件。查看文件的唯一真正方法是将包添加到项目中并手动查看 node_modules。 有一天我可能会出于好奇而这样做,并发现我的 AWS 凭证已经公开了几个月。
解决方案/更安全的替代方案:
npm支持白名单,只需将文件属性添加到package.json以及您打算添加到项目中的所有内容。
现在只有文件中指定的文件将包含在项目中,并且您的点文件将被忽略。
【讨论】:
.gitignore 中有这个test*,我在.npmignore 中有这个test* .github,那么我很好吗?它不会将任何硬币test* 推送到 github,也不会发布到 npm,也不会将 .github 文件夹发布到 npm,对吗?
As [mentioned here][1], it will read only the .npmignore
.npmignore 文件,npm 会忽略 .gitignore 文件。但是在我的用户案例中将文件列入白名单对我来说没有任何意义,因为只有 5-10% 的文件需要被忽略。