天天看點

npm scripts的生命周期管理

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

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

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

npm scripts的生命周期管理

這個init其實是一個向導,會針對package.json裡待生成的每一個字段詢問您想填什麼值。一路回車,使用預設值即可。

npm scripts的生命周期管理

自動生成的package.json内容如下。

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

重點看第9行~第11行,意思就是當npm執行指令時,如果執行到名為start的生命周期事件(lifecycle event),則執行nodejs的指令node example.js,如果執行到名為prestart的生命周期事件, 則執行nodejs指令node example.js,對于poststart也同理。

npm scripts的生命周期管理

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

npm scripts的生命周期管理

現在執行指令行npm start,可以看到依次執行了事件prestart->start->poststart對應的script。

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

繼續閱讀