当用户安装 TypeScript 模块时,如何使用 npm install 将其编译为 JS?

Hel*_*rld 0 node.js typescript npm-publish npm-install npm-scripts

我构建了一个 TypeScript 模块并将其推送到 GitHub。我现在想在我的内部使用这个模块MyApp作为依赖项,它也是用 TypeScript 编写的。该包已在我的中注册MyApp/package.json

  "dependencies": {
    "foo": "github:organization-xyz/foo",
  }
Run Code Online (Sandbox Code Playgroud)

我添加了一个命令build-tsJavaScript在我的foo模块中创建相应的绑定foo/package.json

  "scripts": {
    "build-ts": "tsc"
    ...
  },
Run Code Online (Sandbox Code Playgroud)

当然,当我调用npm i主应用程序时,不会执行该命令。我如何正确准备我的模块foo才能将其成功导入到我的应用程序中?

vas*_*vas 8

将构建命令放入package.json prepare脚本中。

\n

例如:

\n
  "scripts": {\n    "prepare": "npm run build-ts"\n    "build-ts": "tsc"\n    ...\n  },\n
Run Code Online (Sandbox Code Playgroud)\n

prepare是npm 在某些情况下自动运行的生命周期脚本之一。其中一种情况是安装包依赖项时,如npm-install 文档中所述:

\n
\n

如果正在安装的包包含准备脚本,则在打包和安装包之前,将安装其依赖项和 devDependency,并运行准备脚本。

\n
\n

由于准备脚本也在发布之前运行,因此请确保将您配置package.json为不发布构建工件。

\n

既然您提到您正在 GitHub 上发布它,那么这里有一些特定于该案例的更多信息:

\n\n

那是说...

\n

...如果构建不依赖于安装目标(例如 cpu 架构),标准做法是在发布之前将 Typescript 转换为 Javascript。几乎每个人都这样做,包括 Typescript 的开发者。但我不打算在这里说明这一点......

\n