使用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,268評論 2 36
  • 一、什么是 npm 腳本? npm 允許在package.json文件里面,使用scripts字段定義腳本命令。 ...
    豬豬9527閱讀 394評論 0 0
  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,330評論 4 31
  • 關鍵詞:npm 定義:npm 允許在package.json文件里面,使用scripts字段定義腳本命令。 上面代...
    ferrint閱讀 13,629評論 2 6
  • 迷鹿mirror閱讀 166評論 0 1