使用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"
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP。 ...
    ihoey阅读 6,282评论 2 36
  • 一、什么是 npm 脚本? npm 允许在package.json文件里面,使用scripts字段定义脚本命令。 ...
    猪猪9527阅读 394评论 0 0
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 5,343评论 4 31
  • 关键词:npm 定义:npm 允许在package.json文件里面,使用scripts字段定义脚本命令。 上面代...
    ferrint阅读 13,633评论 2 6
  • 迷鹿mirror阅读 169评论 0 1