网站搜索

用 TypeScript 编写的 pnpm 私有工作区包:暴露 src 还是 dist?


我有一个主要使用 TypeScript 代码的 monorepo,使用 pnpm 管理,并且我们有很多工作区内的包依赖(例如用于库包)。这些包是这个工作区私有的,从不单独发布。我们通常这样定义包:

{
  "name": "my-library",
  "license": "UNLICENSED",
  "private": true,
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "files": ["dist"]
}

这个问题在于当你更改库中的某些内容时。有点烦人的是,IDE在库重建之前不会看到这些更改。因此,我正在考虑是否我们应该让包直接公开 TypeScript 源代码:

{
  "name": "my-library",
  "license": "UNLICENSED",
  "private": true,
  "main": "src/index.ts",
  "files": ["src"]
}

乍一看这似乎可行,但它也似乎可能是一个坏主意。这种方法的缺点是什么?TypeScript 源代码会不会有不可预测的行为,因为它会依赖于被依赖包使用的 TypeScript 工具(例如,foo-server 使用 TypeScript 4.7,而 bar-server 使用 TypeScript 4.9,因此它们对 my-library 的源码解释可能不同)?有没有更好的方式来构建我的工作区,以避免这种情况发生?

如果这是一个不好的主意,还有其他策略可以让开发体验更顺畅吗?还是我应该忍一忍,自己应付呢?