使用npm scripts构建前端工作流

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"
  }
}

推荐阅读更多精彩内容