Skip to content

npm script 生命周期有哪些?

Posted on:2024年8月15日 at 23:06

npm 中,scripts 部分允许你定义和运行自定义的脚本命令。npm 脚本有一个生命周期的概念,其中包括一系列的预定义和自定义的生命周期钩子。生命周期钩子的执行顺序和作用如下:

1. 生命周期钩子概述

npm 中,生命周期钩子是一些特定的脚本命令,npm 会在特定的时间点自动运行这些命令。例如,安装包之前、之后或者在发布时。

2. 生命周期钩子的具体阶段

  1. prepublish

    • 触发时间:在 npm publishnpm install 时。
    • 作用:用于在包发布之前进行准备工作(如构建、测试等)。
    • 说明prepublishnpm installnpm publish 之前执行。
  2. prepare

    • 触发时间:在 npm installnpm publish 时。
    • 作用:用于构建、准备包的内容等(如运行编译、构建脚本)。这个阶段在 prepublish 之后执行。
    • 说明prepare 主要用于在本地开发和发布之前执行准备工作。
  3. prepublishOnly

    • 触发时间:在 npm publish 时。
    • 作用:仅在发布包时执行。不会在 npm install 时触发。
    • 说明:这个钩子在 npm publish 时执行,但在 npm install 时不会触发。
  4. postpublish

    • 触发时间:在 npm publish 后。
    • 作用:用于在包发布之后进行清理或其他操作(如发送通知)。
    • 说明postpublish 在包发布之后执行。
  5. preinstall

    • 触发时间:在包的安装之前。
    • 作用:用于在包安装之前执行任何必要的操作(如设置环境)。
    • 说明preinstall 在运行 npm install 之前执行。
  6. install

    • 触发时间:在包的安装过程中。
    • 作用:用于在包安装过程中执行自定义操作。
    • 说明installpreinstall 之后执行。
  7. postinstall

    • 触发时间:在包安装之后。
    • 作用:用于在包安装后执行清理、构建或其他操作(如启动本地服务器)。
    • 说明postinstallinstall 之后执行。
  8. preuninstall

    • 触发时间:在包卸载之前。
    • 作用:用于在包卸载之前执行任何必要的操作(如清理)。
    • 说明preuninstall 在包卸载之前执行。
  9. uninstall

    • 触发时间:在包卸载过程中。
    • 作用:用于在包卸载过程中执行自定义操作。
    • 说明uninstallpreuninstall 之后执行。
  10. postuninstall

    • 触发时间:在包卸载之后。
    • 作用:用于在包卸载之后执行清理或其他操作。
    • 说明postuninstall 在包卸载之后执行。

3. 脚本执行顺序

当执行 npm installnpm publish 时,npm 会按照以下顺序运行这些脚本:

  1. preinstall
  2. install
  3. postinstall
  4. prepublish (在 npm publish 时)
  5. prepare
  6. publish (在 npm publish 时)
  7. postpublish

当卸载包时,执行顺序为:

  1. preuninstall
  2. uninstall
  3. postuninstall

4. 使用脚本

package.json 中定义的自定义脚本与生命周期钩子无关,但可以与这些钩子一起使用。例如:

{
  "scripts": {
    "build": "webpack",
    "test": "jest",
    "prepublishOnly": "npm run build",
    "postinstall": "npm run test"
  }
}

在这个例子中:

通过合理利用生命周期钩子,可以在不同阶段自动执行必要的操作,确保项目的一致性和可靠性。

原文转自:https://fe.ecool.fun/topic/3e0910ed-8340-47cd-a428-db2409431a94