npm包增加忽略提交配置

2019年11月09日Web前端

使用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