为什么不使用 npm 的“prepare”生命周期脚本来转译 TypeScript?

Kal*_*ish 5 node.js npm typescript

免责声明:我是 JavaScript 和 TypeScript 的初学者。

\n

许多 TypeScript 项目都包含一个buildpackage.json. 该脚本旨在通过调用以下命令将代码转换为 JavaScript tsc

\n
{\n    "name": "my-typescript-project",\n    "devDependencies": {\n        "typescript": "^5.1.3",\n        \xe2\x80\xa6\n    },\n    "scripts": {\n        "build": "tsc",\n        \xe2\x80\xa6\n    }\n    \xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

因为build不是npm 的任何生命周期脚本,所以它不会自动执行。相反,它必须使用命令手动执行npm run-script

\n

从版本 4.0.0 开始,npm支持一个名为的生命周期脚本prepare,它在以下时间执行:

\n
\n
    \n
  • 在软件包打包之前运行,即在npm publish和期间运行npm pack
  • \n
  • 在本地运行,npm install无需任何参数
  • \n
  • prepublish在之后但之前运行prepublishOnly
  • \n
  • 注意:如果通过 git 安装的包包含prepare脚本,则在打包和安装包之前,将安装其dependenciesdevDependencies,并运行准备脚本。
  • \n
\n
\n

通过从看似常见的方式切换buildprepare将 TypeScript 转译为 JavaScript,人们将不再需要手动转译代码,并且可以无缝地将 TypeScript 项目安装为git 依赖项。为什么 TypeScript 项目不使用prepare来运行tsc

\n

使用的一个可能原因build是保持与其他包管理器的兼容性;Yarn 不再支持prepare pnpm也不支持。然而,项目必须提交给一名包管理器;切换到另一个需要转换锁定文件等。

\n