更新时间:2022-09-13 11:28:25
我们平时阅读一些开源项目,可能会发现有些项目的package.json里的scripts区域定义的脚本很复杂,令人眼花缭乱。
其实这些脚本是有规律可循的。让我们从最简单的一个例子开始学习。
新建一个空文件夹,执行命令npm init,会自动在该文件夹下生成一个package.json。
我们现在对这个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" }
然后我们再来编写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!"); }