【问题标题】:.npmignore not ignoring files.npmignore 不忽略文件
【发布时间】: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 将包含它。我不知道这是如何工作的细微差别,我只是通过实验发现了它。我发现的任何地方似乎都没有记录。

标签: javascript node.js npm


【解决方案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 到该文件夹​​中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 2017-07-21
      • 2014-07-06
      相关资源
      最近更新 更多