我有一个存储在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
是否适用于私有托管模块?提前谢谢。
答案 0 :(得分:10)
由于您将依赖项myModule
指定为Git存储库,因此npm可能只是克隆了repo。因此,您的.npmignore
文件未被使用。
.npmignore
似乎在“制作模块”时使用,例如:pack
或publish
不消耗模块(如您的示例中所示)。
答案 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存储库到该文件夹中。