请解释 npm script 的生命周期是指什么,并列举出主要的生命周期钩子有哪些?
考察说明
考察对npm脚本执行流程和钩子函数的理解。
回答思路
- 【回答框架 1】生命周期指的是npm在执行脚本时按照预定顺序触发的一系列事件,允许开发者在这些阶段注入自定义逻辑。
- 【回答框架 2】主要钩子包括pre和post前缀脚本,例如preinstall、install、postinstall,它们在对应主脚本之前或之后自动执行。
- 【回答框架 3】还有特殊的生命周期事件如prepublish、prepare、prepublishOnly等,用于发布前后的处理。
- 【回答框架 4】npm 还支持自定义脚本,通过npm run <script>触发,并可以配合pre<script>和post<script>定义钩子。
- 【回答框架 5】执行顺序可通过npm help scripts查看,且钩子默认继承环境变量和参数,但存在易混淆的特定钩子行为需注意区分。
- 【关键点 1】生命周期指npm按固定顺序触发pre、主、post脚本的机制。
- 【关键点 2】常见钩子包括prepublish、prepare、prepublishOnly、preinstall、install、postinstall等。
- 【关键点 3】自定义脚本也可带pre和post钩子。
- 【关键点 4】钩子脚本会继承环境变量,但pre和post默认会继承主脚本的参数。
- 【关键点 5】钩子执行失败会中断后续流程。
- 【易错点 1】将prepublish的行为与其他钩子混淆,旧版本中prepublish会在npm install时触发,新版中则由prepare替代,需关注版本差异。
- 【易错点 2】误以为所有钩子都无条件继承参数,实际只有pre和post自动继承,自定义脚本需要显式传入。
- 【易错点 3】忽略钩子的执行顺序导致依赖未正确安装或构建失败。