.npmignore 不忽略文件
Posted
技术标签:
【中文标题】.npmignore 不忽略文件【英文标题】:.npmignore not ignoring files 【发布时间】:2014-07-27 21:36:30 【问题描述】:我在 github 上存储了一个私有模块,我使用 npm
将其包含在我的一个项目中。该模块有一个.npmignore
文件,但在我安装或更新模块时没有任何内容被忽略。
项目的package.json
"name": "Your Cool Project",
"version": "0.0.0",
"dependencies":
"myModule" : "git+ssh://git@github.com:user/myModule.git",
/* All your other dependencies */
...
模块的.npmignore
文件
.git*
gulpfile.js
index.html
tests.js
README.md
当我运行npm update myModule
时,这些文件仍在下载到我的项目中。我错过了什么吗? .npmignore
是否适用于私有托管模块?提前致谢。
【问题讨论】:
请注意,README 始终包含在其中,即使在.npmignore
中列出。见docs
您可以使用npm publish --dry-run
确定在线情况。
请注意,如果您的package.json
中有main
属性并且您尝试忽略分配给main
的路径所在的目录,npm publish
将包含它。我不知道这是如何工作的细微差别,我只是通过实验发现了它。我发现的任何地方似乎都没有记录。
【参考方案1】:
由于您将依赖项 myModule
指定为 Git 存储库,因此 npm 可能只是在克隆存储库。因此您的 .npmignore
文件没有被使用。
.npmignore
似乎在“制作模块”时使用,例如:pack
或 publish
不使用模块(如您的示例中)。
【讨论】:
【参考方案2】:使用.npmignore
时要小心
如果您没有使用过.npmignore
,它会默认为.gitignore
,并添加一些其他合理的默认值。
许多人没有意识到,一旦将.npmignore
文件添加到项目中,.gitignore
规则就会(讽刺地)被忽略。结果是您需要同步审核这两个忽略文件,以防止发布时出现敏感泄漏。
不过,我认为缺少将/node_modules
放入您的.npmignore
。
在package.json
文件中设置属性private: true
如下:
"name": "project-name",
"version": "0.0.0",
"license": "MIT",
"scripts":
,
"private": true,
"dependencies":
,
"devDependencies":
生成构建到/public
文件夹中以将其发布到 NPM 存储库,.npmignore
到该文件夹中。
【讨论】:
以上是关于.npmignore 不忽略文件的主要内容,如果未能解决你的问题,请参考以下文章