且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

npm scripts的生命周期管理

更新时间:2022-09-07 21:37:50

我们平时阅读一些开源项目,可能会发现有些项目的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的生命周期管理