我有一个 TypeScript mono 存储库,具有以下基本文件布局:
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 packages/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 workspace-a/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 workspace-b/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\nRun Code Online (Sandbox Code Playgroud)\n根tsconfig.json看起来像这样(删除了不相关的属性):
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 packages/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 workspace-a/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 workspace-b/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n\xe2\x94\x82\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\nRun Code Online (Sandbox Code Playgroud)\ntsconfig.json每个包看起来像这样:
{\n "compilerOptions": {\n "baseUrl": ".",\n "paths": {\n "@scope/*": ["packages/*/src"]\n },\n "module": "es2020",\n "moduleResolution": "node"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n所有包都使用@scope范围。此设置使以下代码可以workspace-a按预期工作:
{\n "extends": "../../tsconfig"\n}\nRun Code Online (Sandbox Code Playgroud)\n但是,以下代码也可以根据tscVSCode 中的自动导入首先工作并建议:
import { Foo } from \'@scope/workspace-b\';\nRun Code Online (Sandbox Code Playgroud)\n一旦软件包发布到 npm,后者就不起作用,导致软件包发布后出现问题。
\n我可以让 TypeScript 禁止后者吗?I\xe2\x80\x99ll 也接受涉及现有 ESLint 规则的解决方案。
\n完整的源代码可以在这里找到。
\n这个问题是由baseUrl选项引起的。以前使用该选项时需要这样做paths。
从 TypeScript 4.1 开始,paths无需baseUrl.
所以tsconfig.json看起来像这样:
{
"compilerOptions": {
"paths": {
"@scope/*": ["./packages/*/src"]
},
"module": "es2020",
"moduleResolution": "node"
}
}
Run Code Online (Sandbox Code Playgroud)
baseUrl尚不支持省略,它也被各种流行的TypeScripttsconfig-paths相关包使用,例如:
请注意,如果您使用tsconfig-pathsfor"paths"来处理ts-node,则必须显式指定"baseUrl"它,因为它尚不支持未指定的 baseUrl。
| 归档时间: |
|
| 查看次数: |
1842 次 |
| 最近记录: |