npm包增加忽略提交配置
使用git
做版本管理时,我们经常会用到.gitignore
这个文件来控制某些文件的提交,比如node_modules
等。但是在发布npm
包时,有些文件比如example
等我并不想提交到npm
官网上,但是需要提交到git
上。那么,我们就来看下npm下有没有类似于gitignore
这种功能。
在实际的publish
,npm会将.gitignore
中的文件排除,提交其他的文件。
.npmignore
和.gitignore
类似,npm官方提供了.npmignore
文件来控制哪些文件不被提交到npm官网。但是当没有该文件时,便会根据.gitignore
文件中的忽略条件。这也就解释了实际操作中为何根据.gitignore
配置来控制提交了。
.npmignore
文件中的抒写规则和.gitignore
规则类似:
- 以空行或开头为#的那行将被忽略。
- 用/指定对应文件夹目录。
- ...
默认情况下,以下路径和文件将被忽略,因此不需要添加.npmignore
中,
- .*.swp
- ._*
- .DS_Store
- .git
- .hg
- .npmrc
- .lock-wscript
- .svn
- .wafpickle-*
- config.gypi
- CVS
- npm-debug.log
- node_modules
以下文件是永远都不会被忽略的,即使你加到.npmignore
中:
- package.json
- README
- CHANGELOG
- LICENSE
如果觉得再增加个文件是个麻烦事,我们还有其他方式。
files属性
ignore方式是利用黑名单的方式控制文件的提交,package.json
中的files
属性则是利用白名单的方式去控制。他可以是字符串或数组,写入的是需要提交到npm官网的文件或文件夹。
例如:
{
"files": [
"dist"
]
}
这样就会提交dist文件夹以及默认的npm永不会忽略的那几个文件。
优先级
既然有这么多种选择,那总有优先级顺序吧。实际优先级顺序如下:
files属性 > .npmignore > .gitignore
总结
这下可以给包增加上npm的忽略提交了,毕竟用户在使用你的包时,可以免去无用文件的下载,提升下载速度。
附上npm官方对npmignore的介绍;https://docs.npmjs.com/misc/developers。