当用户安装我的 TypeScript 模块时,如何让 `npm install` 将它编译成 JS?

How do I get `npm install` to compile my TypeScript module into JS when it is installed by a user?

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

中注册
  "dependencies": {
    "foo": "github:organization-xyz/foo",
  }

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

  "scripts": {
    "build-ts": "tsc"
    ...
  },

当然,当我在我的主应用程序上调用npm i时,这个命令并没有被执行。我将如何正确准备我的模块 foo 以便在我的应用程序中成功导入它?

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

例如:

  "scripts": {
    "prepare": "npm run build-ts"
    "build-ts": "tsc"
    ...
  },

prepare 是其中之一 Life Cycle Scripts that are automatically run by npm in certain situations. One of the situations is when package dependencies are installed, as stated in the npm-install docs:

If the package being installed contains a prepare script, its dependencies and devDependencies will be installed, and the prepare script will be run, before the package is packaged and installed.

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

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

也就是说...

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