npm原理
npm 脚本的原理非常简单。每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。因此,只要是 Shell(一般是 Bash)可以运行的命令,就可以写在 npm 脚本里面。
特别的是,npm run新建的这个 Shell,会将当前目录的node_modules/.bin子目录加入PATH变量,执行结束后,再将PATH变量恢复原样。
这就意味着,当前目录下的node_modules/.bin子目录里面的所有脚本,都可以直接用脚本名调用,而不必加上路径。
scripts 配置
其实,scripts的配置就是把bash里面执行的命令,写到scripts对象里,具体怎么写要看每个脚本的配置方法!!!!!
首先,我们需要搞清楚如何使用 npm 来管理构建脚本。作为核心命令之一的 npm run-script 命令(简称 npm run )可以从 package.json 中解析出 scripts 对象,然后将该对象的key作为 npm run 的第一个参数,它会在操作系统的默认终端中执行该key对应的命令,请看下面的 package.json 文件:
{
"name": "express-sticky-note",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"webpack": "webpack --config ./src/webpack.config.js",
"watch": "onchange 'src/**/*.js' 'src/**/*.less' -- npm run webpack"
},
"devDependencies": {
"onchange": "^3.2.1",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.4.2"
}
}
如果运行npm run webpack
,那么 npm 将在bash中执行webpack --config ./src/webpack.config.js
,如果运行npm run watch
,那么将在bash中执行onchange 'src/**/*.js' 'src/**/*.less' -- npm run webpack
另外,我们还可以合并scripts命令,比如在上面的代码中加入all命令,那么当我们运行npm run all命令的时候,npm run webpack 和 npm run watch两个命令都会执行了
{
"name": "express-sticky-note",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"webpack": "webpack --config ./src/webpack.config.js",
"watch": "onchange 'src/**/*.js' 'src/**/*.less' -- npm run webpack",
"all":"npm run webpack && npm run watch" //&&表示顺序执行,&表示同时执行
},
"devDependencies": {
"onchange": "^3.2.1",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.4.2"
}
}