.npmignore不忽略文件

时间:2014-06-06 14:54:15

标签: javascript node.js npm

我有一个存储在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是否适用于私有托管模块?提前谢谢。

2 个答案:

答案 0 :(得分:10)

由于您将依赖项myModule指定为Git存储库,因此npm可能只是克隆了repo。因此,您的.npmignore文件未被使用。

.npmignore似乎在“制作模块”时使用,例如:packpublish不消耗模块(如您的示例中所示)。

答案 1 :(得分:1)

使用.npmignore

时要小心

如果您还没有使用.npmignore,则默认为.gitignore,并附加一些额外的默认值。

有许多人没有意识到,一旦您向项目添加了.npmignore文件,.gitignore规则(具有讽刺意味)就会被忽略。结果是您需要同步审核两个忽略文件,以防止发布时出现敏感泄漏。

不过,我认为遗漏了/node_modules中的.npmignore

private: true文件中设置属性package.json,如下所示:

{
  "name": "project-name",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
  },
  "private": true,
  "dependencies": {
  },
  "devDependencies": {
  }
}

将构建生成到/public文件夹,以将.npmignore发布到NPM存储库到该文件夹​​中。