发布
npm 支持为版本打上标签,这叫做发布标签(dist-tag)。如果不指定发布标签,默认就是latest。用户下载模块时,默认安装的就是latest标签指向的版本。
新发布的版本,如果不希望用户默认安装,就需要自己指定标签。举例来说,某个模块的最新版本是4.6.12,但是有些用户还在使用老版本3.2.13。现在,你修正了一些老版本的 bug,发了一个新版本3.2.14。如果不指定发布标签,3.2.14的发布标签就是latest,因为它是最新发布的。
这导致的后果就是,用户执行下面的命令,进行默认安装时,会出现非预期的结果。
$ npm install <package>执行上面命令时,用户会默认安装3.2.14,而不是4.6.12。因为latest标签指向3.2.14。
解决方法就是,发布3.2.14的时候,为它打上一个发布标签。这样,3.2.14就不会占用latest标签。
$ npm publish --tag=previous执行上面的命令后,3.2.14的发布标签就是previous。
安装时,必须指定这个标签,才能安装到3.2.14。
$ npm install <package>@previous# 或者$ npm install <package> --tag previous上面的命令的两种语法都可以指定标签名。由于latest是默认标签,所以可以省略。
$ npm install <package># 等同于$ npm install <package>@latest一种常见的做法是,发布下一个大版本时,指定它的发布标签为next。
# 发布$ npm publish --tag=next
# 安装$ npm publish <package>@next这样的话,用户默认安装的还是主流版本,但是愿意尝鲜的用户,可以使用新版本。
等到新版本足够可靠以后,再把latest标签指定到新版本。
$ npm dist-tag add <package>@5.0.1 latest如果希望把默认的发布标签改掉,不再是latest,可以写在package.json里面。
{ … "publishConfig": { "tag": "next" }}上面的设置,可以使得发布新版本时,发布标签默认为next。
常用的发布标签有stable、beta、dev等等。
npm dist-tag 命令
Section titled “npm dist-tag 命令”npm dist-tag命令用来管理发布标签。
npm dist-tag ls用来列出所有的发布标签。如果不指定模块名,那么默认为当前模块。
$ npm dist-tag ls [<pkg>]npm dist-tag add用来为一个版本指定发布标签。
$ npm dist-tag add <pkg>@<version> [<tag>]npm dist-tag rm用来移除一个发布标签。
$ npm dist-tag rm <pkg> <tag>.gitignore,.npmignore
Section titled “.gitignore,.npmignore”如果当前项目的根目录下有.gitignore文件,该文件里面的路径不会打包进入 npm 模块。
如果有.npmignore文件,那么 npm 将忽略.gitignore文件,不将.npmignore文件里面的路径打包进入 npm 模块。如果有些文件不希望进入 npm 模块(比如测试用例),但是希望进入 Git 仓库,那么可以使用.npmignore。
node_modules
# .npmignorenode_modulestests此外,package.json的files字段,也可以用来排除进入 npm 模块的文件。
{ "files": [ "index.js" ]}npm 会最优先排除files字段里面的文件。另外,无论如何设置,package.json文件都会进入 npm 模块。
npm pack 命令
Section titled “npm pack 命令”npm pack命令用来打包当前项目,打包后的文件会在当前目录下生成,文件名为<name>-<version>.tgz。
$ npm pack如果多次运行该命令,每次生成的包将覆盖前一次的包。
npm pack可以接受路径作为参数,打包该路径下的模块。如果没有提供任何参数,将打包当前目录。
$ npm pack foo/bar--dry-run参数会输出打包的内容,而不生成打包文件。
$ npm pack --dry-run- One simple trick for JavaScript package maintainers, by Stephan Bönnemann