Ale*_*aev 5 typescript visual-studio-code typescript-typings lerna monorepo
我有一个使用yarn workspaces和lerna; 的monorepo项目。它的所有部分都用TypeScript编写。这些模块位于类似的子文件夹中,packages/module-n并且每个模块都有自己package.json的行,并带有以下几行:
"main": "dist/index.js",
"types": "dist/index.ts",
Run Code Online (Sandbox Code Playgroud)
每个软件包的源代码都位于中packages/module-n/src/index.ts,因此没有什么异常。
从命令行构建或发布时,一切都很好-感谢每个软件包文件夹中都有tsconfig.json一个build脚本。但是,在VSCode中进行日常代码编辑时,即使我运行tsc --watch所有软件包以使链接的依赖项保持同步,事情也变得不太方便。
当我命令单击指向对等程序包的定义时,VSCode带我到packages/package-n/dist/index.d.ts而不是packages/package-n/src/index.ts我当前正在编辑的位置。另外,当我想用重构某些内容时F2,可能dist/index.d.ts偶尔会修改文件,这会build:watch由于错误而迫使我重新启动。问题是TypeScript看到了手动调整,**/dist/index.d.ts并拒绝进一步更新这些文件。
为了克服这种不便,我在根目录中编写了这两个脚本package.json,但我不是自己的解决方案的忠实拥护者:
"use-dev-typings": "lerna exec \"replace --quiet dist\\/index\\.d\\.ts src/index.ts package.json\"",
"use-prod-typings": "lerna exec \"replace --quiet src\\/index\\.ts dist/index.d.ts package.json\""
Run Code Online (Sandbox Code Playgroud)
这是我在同一根目录中使用它们的方式package.json:
"build": "yarn use-prod-typings && lerna run build",
"build:watch": "lerna run build; yarn use-dev-typings && lerna run --parallel build:watch",
Run Code Online (Sandbox Code Playgroud)
我们的想法是,在我开始编辑VSCode文件,从而去yarn build:watch的,我所有的补丁packages/package-n/package.json替换文件"types": "dist/index.d.ts"用"types": "src/index.ts"。这修复了命令+单击和重构的问题,这很棒。如果是一次性建筑(例如发布之前),请"types"还原为"dist/index.d.ts"。
我想知道是否有更好的方法来实现我的目标,如果有人可以给我建议,那将是很好的。我敢肯定,我"src/index.ts"有一天会偶然提交,甚至发布具有此值的版本。src/*.tsnpm发行版的内容已排除在外,以保持我的软件包小巧。
https://github.com/Izhaki/mono.ts
它使用纱线工作区并与 VSCode 很好地结合在一起。我希望自述文件足够清楚。
基本上,使用两个(并行)打字稿配置树:
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |