前端 package.json的使用, npm的生命周期
package.json本身没有生命周期,它是一个描述项目元信息和依赖关系的配置文件,但它参与了npm包的生命周期,即从包创建、发布、安装、运行到卸载的整个过程,通过定义scripts(如preinstall, install, postinstall, prepublish, publish, preuninstall, uninstall, postuninstall等),允许开发者在这些特定时刻执行自定义命令。
npm 包生命周期主要阶段
- 创建/开发阶段:
- prepack/pack: 打包前钩子.
- pack: 打包命令执行.
- prepublishOnly/prepublish: 发布前钩子,确保包准备好.
- publish: 发布到注册中心.
- 安装/下载阶段:
- preinstall: npm install执行前.
- install: 安装命令执行(通常是构建或链接).
- postinstall: npm install完成或包安装后执行.
- preshrinkwrap/shrinkwrap: 生成npm-shrinkwrap.json.
- postshrinkwrap: npm-shrinkwrap.json生成后.
- 执行/运行阶段:
- pretest/test/posttest: 测试脚本.
- prestop/stop/poststop: 停止脚本.
- prestart/start/poststart: 启动脚本.
- 卸载/移除阶段:
- preuninstall: 卸载前.
- uninstall: 卸载脚本.
- postuninstall: 卸载后,清理工作.
总结
- package.json是**npm(或yarn, pnpm)**管理包生命周期的基础文件.
- 它通过scripts字段定义了钩子函数,让开发者能在包的安装、发布、运行、卸载等关键节点注入逻辑.
- 这使得自动化构建、测试、部署流程变得高效和可控.
用途:
- 本地化构建:编译前端资源(如 SASS 编译成 CSS)。
- 数据库迁移:在开发环境进行数据初始化。
- 生成文件:创建配置文件、启动脚本。
- 权限设置:赋予特定文件执行权限。
- 示例:
json
"scripts": { "postinstall": "cp node_modules/d3/dist/d3.min.js app/public/js/d3.min.js || true"}
- 脚本会在安装完所有 node_modules 后运行 cp 文件。