天天看點

npm scripts的生命周期管理

我們平時閱讀一些開源項目,可能會發現有些項目的package.json裡的scripts區域定義的腳本很複雜,令人眼花缭亂。

其實這些腳本是有規律可循的。讓我們從最簡單的一個例子開始學習。

建立一個空檔案夾,執行指令npm init,會自動在該檔案夾下生成一個package.json。

npm scripts的生命周期管理
我們現在對這個package.json進行少量修改,以此來學習scripts的生命周期管理(lifecycle management)。

{

"name": "nodejsexample",

"version": "1.0.0",

"description": "",

"main": "index.js",

"scripts": {

"build": "node example.js",

"dev": "node example.js",

"start": "node example.js",

"prestart": "node example.js",

"poststart": "node example.js"

},

"author": "",

"license": "ISC"

}      
npm scripts的生命周期管理

然後我們再來編寫example.js。為了簡單起見,用example.js同時響應prestart, start和poststart三個事件,是以在example.js裡需要判斷當該檔案執行時,到底所處哪個生命周期事件。這個可以用環境變量process.env.npm_lifecycle_event獲得:

const ENVIRONMENT = process.env.npm_lifecycle_event;

if (ENVIRONMENT === "build") {

      console.log("Running your build tasks!");

}

if ( ENVIRONMENT === "dev") {

       console.log("Running the dev server!");同

}

if ( ENVIRONMENT === "prestart") {

      console.log("Prestart event: Prepare for Start event!");

}

if ( ENVIRONMENT === "poststart") {

      console.log("Poststart event: Do some cleanup task!");

}

if ( ENVIRONMENT === "start") {

      console.log("Running App in production!");

}      
npm scripts的生命周期管理
npm scripts的生命周期管理