package.json 文件有一个 scripts 字段,可以用于指定脚本命令,供 npm 直接调用。
注:npm run 为每条命令提供了 pre- 和 post- 两个钩子(hook)。以 npm run test 为例,如果我们的 scripts 字段规定了 pretest 和 posttest:
则会先执行 pretest 任务,再执行 test 任务,完成 test 任务后即执行 posttest 任务。
可以简单的将二者理解为:预执行、后执行;
npm run 会创建一个新的 shell,执行指定的命令,并将 node_modules/.bin 加入 PATH 变量。当脚本内容结束,则子 shell 关闭,回到父 shell 中。
1、npm run & npm run-script
这两命令的效果都是一样的,都能执行 package.json 文件 scripts 字段下指定的任务。
npm run 是 npm run-script 的缩写,一般都使用 前者,但是后者可以更好地反应这个命令的本质;
直接运行 npm run 或 npm run-script,不加参数会列出 scripts 属性下所有可运行的命令极其命令内容。
npm run 命令会自动在环境变量 $PATH 添加 node_modules/.bin 目录,所以 scripts 字段里面调用命令时不用加上路径。
所以我们在 package.json 文件内的 scripts 字段内指定任务的时候 一般 无需指定脚本文件的路径,只需要将脚本放到 ./node_module/.bin/ 目录下即可,命令会在 这个目录 下自动寻找对应的脚本文件。而无需使用./node_modules/.bin/jshint**.js。
2、管道式命令
如果希望同时执行多个任务,可以借用 Linux 系统的 管道命令,将两个操作连在一起。
|:连接两个任务
&&:任务内部引用其他任务,子任务 先后 执行 ;亦为标签前面执行成功后,后面的才执行;
&:任务内部引用其他任务,子任务 平行 执行;标签前后的一起执行;
3、常见的命令补充
start 脚本命令
一般用于项目的初始化,是接下来一切工作的依赖起始端
dev 脚本命令
规定开发阶段所要做的处理,比如监视文件变化、实时编译……
server 脚本命令
一般用于启动服务
test 脚本命令
一般用于执行测试:单元测试、*-lint……
prod 脚本命令
一般用于规定进入生产环境时需要做的处理
help 脚本命令
help 脚本命令一般用于展示帮助信息。
docs 脚本命令
docs 脚本命令一般用于生成文档。