.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 似乎在“制作模块”时使用,例如:packpublish 不使用模块(如您的示例中)。

【讨论】:

【参考方案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 不忽略文件的主要内容,如果未能解决你的问题,请参考以下文章

忽略 npm 构建的文件

我应该 .npmignore 我的测试吗?

vue制作npm插件

svn设置忽略文件为啥不管用

git配置忽略文件(已提交文件和目录的忽略)

svn怎么忽略部分文件更新?