为什么npm不尊重用户/全球npmignore?

Ben*_*ank 7 windows npm

我的编辑器生成工作区文件和备份文件夹,这些文件和备份文件夹对我写的软件用户不感兴趣.为了避免在每个项目中列出我的编辑器特定的忽略,我试图告诉npm在用户或全局级别忽略它们.

不幸的是,我没有运气这样做.npm pack在我的项目文件夹中运行,即使我先清除npm缓存,也包括工作区文件和两兆字节的备份文件.(对于只有十千字节代码的项目!)我尝试过ignore配置设置,每用户.npmignore和全局npmignore,都没有效果.

这是我的输出npm config ls -l,剪切到相关部分:

; userconfig C:\Users\benblank\.npmrc
ignore = "__history *.epp"

; builtin config undefined
prefix = "C:\\Users\\benblank\\AppData\\Roaming\\npm"

; default values
globalignorefile = "C:\\Users\\benblank\\AppData\\Roaming\\npm\\etc\\npmignore"
userignorefile = "C:\\Users\\benblank\\.npmignore"
Run Code Online (Sandbox Code Playgroud)

和(相同)内容C:\Users\benblank\.npmignoreC:\Users\benblank\AppData\Roaming\npm\etc\npmignore:

__history
*.epp
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我正在运行Windows 7,node @ 0.8.9和npm@1.1.61.

Set*_*day 5

存在与文件相关的重大未决问题npmignore

值得庆幸的是,还有更好的选择!它是 package.jsonfiles属性。

这是我的delivr项目的一个例子。

"files": [
  "lib",
  "index.js"
]
Run Code Online (Sandbox Code Playgroud)

为什么更好?

  1. 内部机械装置使该机构更加可靠。

  2. 它是白名单而不是黑名单。通常,假设您使用文件夹(或类似文件夹),那么您想要包含的文件/目录比您想要排除的lib文件/目录要少,所以它更简洁。

  3. 它是干的。如果.npmignore文件存在,npm则不会咨询.gitignore忽略模式,这通常需要重叠和重复的信息。使用白名单则不存在此问题。

  4. 存储库中少了一个文件。package.json已经是定义您的包的清单,并且此配置存在于此非常有意义。