当前位置: 首页 > news >正文

关于npm的钩子函数

一、npm scripts 的生命周期钩子(Lifecycle Scripts)

npm 提供了一些 ​​特殊的 script 名称​​,它们是 ​​生命周期钩子​​,会在特定时机 ​​自动执行​​。这些钩子包括:
1.prepublishOnly(在 npm publish之前执行(仅发布前))
2.prepublish((已废弃,不推荐使用)在打包或发布前执行)
3.prepare(在 npm publish或 npm install(本地安装)时执行,包括 git clone后的安装)
4.preinstall(在安装依赖之前执行)
5.install(安装依赖时执行)
6.postinstall(在安装依赖之后执行(最常用的钩子之一))
7.preuninstall(在卸载包之前执行)
8.uninstall(在卸载包时执行)
9.postuninstall(在卸载包之后执行)
10.preversion(在修改版本号之前执行(比如 npm version patch))
11.version(修改版本号时执行)
12,postversion(修改版本号之后执行)
13.pretest(在运行 npm test之前执行)
14.test(运行测试)
15.posttest(在运行 npm test之后执行)
16.prestop(在运行 npm stop之前执行)
17.stop(停止服务)
18.poststop(在运行 npm stop之后执行)
19.prestart(在运行 npm start之前执行)
20.start(启动服务)
21.poststart(在运行 npm start之后执行)
22.prerestart(在运行 npm restart之前执行)
23.restart(重启服务)
24.postrestart(在运行 npm restart之后执行)

二、与 npm run build相关的钩子
虽然 build本身不是 npm 的生命周期钩子,但如果你在 package.json的 scripts中按如下方式定义了多个脚本:

{"scripts": {"prebuild": "echo '即将开始构建...'","build": "webpack --mode production","postbuild": "echo '构建完成!'"}
}

那么当你运行: npm run build
在 npm 中,当你运行 npm run build命令时,npm 会根据你项目中的 package.json文件里 scripts字段下定义的 build脚本来执行相应的命令。但除了你显式定义的 build脚本本身,npm 还会在脚本执行 ​​前后​​ 自动触发一些 ​​生命周期钩子(Lifecycle Hooks)​​,这些钩子是 npm 内置的机制,在特定阶段自动运行。

不过,​​npm 默认并不会在运行 npm run build时自动执行额外的钩子,除非你显式地在 package.json的 scripts中定义了它们,或者它们是 npm 生命周期脚本中与 build相关联的钩子。​​

一、npm scripts 的生命周期钩子(Lifecycle Scripts)
npm 提供了一些 ​​特殊的 script 名称​​,它们是 ​​生命周期钩子​​,会在特定时机 ​​自动执行​​。这些钩子包括:

钩子名称

触发时机

prepublishOnly

在 npm publish之前执行(仅发布前)

prepublish

(已废弃,不推荐使用)在打包或发布前执行

prepare

在 npm publish或 npm install(本地安装)时执行,包括 git clone后的安装

preinstall

在安装依赖之前执行

install

安装依赖时执行

postinstall

在安装依赖之后执行(最常用的钩子之一)

preuninstall

在卸载包之前执行

uninstall

在卸载包时执行

postuninstall

在卸载包之后执行

preversion

在修改版本号之前执行(比如 npm version patch)

version

修改版本号时执行

postversion

修改版本号之后执行

pretest

在运行 npm test之前执行

test

运行测试

posttest

在运行 npm test之后执行

prestop

在运行 npm stop之前执行

stop

停止服务

poststop

在运行 npm stop之后执行

prestart

在运行 npm start之前执行

start

启动服务

poststart

在运行 npm start之后执行

prerestart

在运行 npm restart之前执行

restart

重启服务

postrestart

在运行 npm restart之后执行

⚠️ 注意:​​build不是 npm 的内置生命周期钩子​​,它只是一个普通的自定义脚本名称,除非你自己定义了它。

二、与 npm run build相关的钩子

虽然 build本身不是 npm 的生命周期钩子,但如果你在 package.json的 scripts中按如下方式定义了多个脚本:

{
“scripts”: {
“prebuild”: “echo ‘即将开始构建…’”,
“build”: “webpack --mode production”,
“postbuild”: “echo ‘构建完成!’”
}
}
那么当你运行:npm run build
npm 会 ​​自动按顺序执行以下脚本​​:

1.​​prebuild​​(如果定义了)→ 在运行 build之前执行

2.​​build​​ → 你显式运行的主要构建脚本

3.postbuild​​(如果定义了)→ 在运行 build之后执行

三、额外说明

•​​pre和 post钩子不仅适用于 build,也适用于其他自定义脚本​​,比如 prestart/ start/ poststart,或者 pretest/ test/ posttest等。

•​​这些钩子是 npm 的内置功能,不需要安装任何插件​​。


文章转载自:

http://CdbN0IPp.tsgxz.cn
http://arzdYCmK.tsgxz.cn
http://H6sajfKf.tsgxz.cn
http://TcWQpx69.tsgxz.cn
http://GejvPfi5.tsgxz.cn
http://HORAj5WT.tsgxz.cn
http://DkpcuuRy.tsgxz.cn
http://D0GHWLlL.tsgxz.cn
http://MTFrLuuW.tsgxz.cn
http://CkPS0AX1.tsgxz.cn
http://oJIZt9yS.tsgxz.cn
http://pkeU9etL.tsgxz.cn
http://kbdC4LcC.tsgxz.cn
http://eRyYRipK.tsgxz.cn
http://V9To97Ke.tsgxz.cn
http://bMLHbA4B.tsgxz.cn
http://DXuzKIgh.tsgxz.cn
http://lBEE6vXV.tsgxz.cn
http://p4842fRS.tsgxz.cn
http://a0Wq2rrS.tsgxz.cn
http://gEKFn73F.tsgxz.cn
http://QsPe0GT7.tsgxz.cn
http://aGkp46fc.tsgxz.cn
http://yulijsDa.tsgxz.cn
http://sh1np5GU.tsgxz.cn
http://HMnAxeRs.tsgxz.cn
http://7mXwi4D3.tsgxz.cn
http://iE0zxTgO.tsgxz.cn
http://WClhy1PM.tsgxz.cn
http://2WI9rkso.tsgxz.cn
http://www.dtcms.com/a/371980.html

相关文章:

  • 旋转数字矩阵 od
  • Matlab:基于遗传算法优化 PID 控制器的完整实现与解析
  • JBoltAI需求分析大师:基于SpringBoot的大模型智能需求文档生成解决方案
  • 【用matlab编写了一个DSP数据处理小软件2】
  • 2025年跨领域职业发展认证路径分析
  • 【LeetCode 每日一题】1277. 统计全为 1 的正方形子矩阵
  • React 19 全面解析:颠覆性的新特性与实战指南
  • 【Java学习笔记】18.Java数据库编程 -2
  • 量化股票从贫穷到财务自由之路 - 零基础搭建Python量化环境:Anaconda、Jupyter实战指南
  • HarmonyOS 应用开发深度实践:基于 Stage 模型与声明式 UI 的精髓
  • Dify工作流(三)
  • Windows 11通过VMware Workstation Pro搭建centos7.6系统遇到的问题
  • 多界面传值
  • shell编程-案例
  • Docker--宿主机和容器相互拷贝文件
  • 打包成 UMD,通过 CDN静态资源共享:微前端项目中跨项目共享公共组件的最佳实践
  • 关于物料采购合同,付款规则库的程序设计(刘欣)
  • 自然语言处理 基于神经网络的词向量转化模型word2vec
  • 【数据分析】一种用于校正微生物组数据中批次效应的多变量框架
  • Spring WebFlux响应式编程原理深度解析与性能优化实践指南
  • ZYNQ UART中断
  • SimLingo:纯视觉框架下的自动驾驶视觉 - 语言 - 动作融合模型
  • 计算机视觉(十):ROI
  • 【设计模式】UML类图关系中的数量表示(详细版)
  • 利用 SeBackupPrivilege 的最快方法
  • 华为基于IPD的产品质量计划模板
  • leecoede 二分查找 题集
  • 编写第一个程序-Ai8051U-32bit,Keil设置
  • Objective-C方法参数标签怎么设置
  • 国内外最新AI语言模型行情分析2025年9月最新内容