我有这样的文件夹结构:
- mono-repo
tsconfig.paths.json
- Website
tsconfig.json
- src
test.ts
index.ts
- Tool
- src
index.ts
// mono-repo/tsconfig.paths.json
{
"compilerOptions": {
"paths": {
"tool": ["Tool/src"],
}
}
}
// mono-repo/Website/src/index.ts
import { test } from "test";
import { tool } from "tool";
test(tool);
我希望能够扩展tsconfig.paths.json
,以便每个包都能为其他包正确地输入模块。
失败尝试1
// mono-repo/Website/tsconfig.json
{
"extends": "../tsconfig.paths.json",
"compilerOptions": {
"baseUrl": "./src",
}
}
问题:找不到模块“工具”。添加到路径中的baseUrl将导致mono-repo/Website/src/Tool/src
。这不是一条真正的道路。
失败2
// mono-repo/Website/tsconfig.json
{
"extends": "../tsconfig.paths.json",
"compilerOptions": {
"baseUrl": "../",
}
}
问题:不能从“测试”导入测试。baseUrl不是项目src。除了相对路径之外,任何东西都是不可出口的。
函数式但丑陋尝试3
// mono-repo/tsconfig.paths.json
{
"compilerOptions": {
"paths": {
"tool": ["../../Tool/src"],
}
}
}
// mono-repo/Website/tsconfig.json
{
"extends": "../tsconfig.paths.json",
"compilerOptions": {
"baseUrl": "./src",
}
}
问题:可以工作,但是假设扩展tsconfig.paths.json的每个tsconfig的tsconfig.paths.json总是位于mono-repo
下面的两个目录。这对于我的项目来说是正确的,但我不太愿意把它作为一个标准。
如何为monorepo?设置可扩展的“路径”tsconfig json?
发布于 2022-04-02 13:31:19
需要知道的是,tsconfig扩展是一个override
和not a merge
。有了这些信息,您就可以理解通过扩展基本的tsconfig来实现的目标不能像您期望的那样工作。
此外,使用paths
选项应该始终与baseUrl
一起工作,以解决解决问题。
尽管如此,这里有一个解决方案,您可以使用它来解决这个问题。
在项目的根级创建一个tsconfig.json,其行为:
"paths": {
"~/*": ["../../../mono-repo/*/src"]
}
这意味着在每个子包中,您可以扩展该tsconfig
文件,然后将您的src
目录指定为baseUrl
。然后,您将能够导入如下内容:
import { tool } from "~/Tool";
希望这是清楚的,如果有什么东西丢失了,请告诉我
发布于 2020-03-09 10:02:11
如果我正确理解的话,那是关于create-react-app
的。如果是这样,那么您需要回购根目录中的多个文件夹,如src
。这需要配置webpack,以避免弹出、重新连接并将别名用于多个顶级目录:
// config-overrides.js:
const {alias, configPaths} = require('react-app-rewire-alias')
module.exports = function override(config) {
alias(configPaths())(config)
return config
}
https://stackoverflow.com/questions/59256368
复制相似问题