npm包发布时忽略某些文件(夹)

最近在看axios源码,看到项目根目录下有一个名为.npmignore的文件,查询文档发现它是一种黑名单机制,在包发布时用于排除某些文件或目录。

内容语法格式

跟.gitignore基本一样。下面是axios源码里的配置内容:

**/.*
*.iml
coverage/
examples/
node_modules/
typings/
sandbox/
test/
bower.json
CODE_OF_CONDUCT.md
COLLABORATOR_GUIDE.md
CONTRIBUTING.md
COOKBOOK.md
ECOSYSTEM.md
Gruntfile.js
karma.conf.js
webpack.*.js
sauce_connect.log

可以看到忽略了二级目录下的任何.文件,examples目录,sandbox目录,test目录,webpackgruntkarma等配置文件.当然也必须有node_modules目录。

另,如果没有指定该文件,npm默认会将.gitignore视为.npmignore

对比项目目录和发布的包目录

还是拿axios举例。

项目目录:
npm包发布时忽略某些文件(夹)

最终发布到npm的包目录:
npm包发布时忽略某些文件(夹)

设置白名单

比如,我有一份非常全的.npmignore清单,我不想去动它,可又想把清单上的一些文件放开并上传到npm,怎么办呢?

答案是:通过配置package.json里的files字段来解决。
比如,我的.npmignore清单忽略了examples整个目录:

examples

配置package.json里的files字段放开examples下的white-label.txt文件:

{
  "files": [
    "examples/white-label.txt"
  ],
}

优先级问题

如果项目同时存在.gitignore,.npmignore,并且配置了files字段,优先级如下:
files>.npmignore>.gitignore

上一篇:spark的资源调度


下一篇:Apache ShenYu 快速开始