typescript - 为 monorepo 扩展“路径”tsconfig 文件
问题描述
我有一个像这样的文件夹结构:
- 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 的 baseUrl 始终是下面的两个目录mono-repo
。这目前适用于我的项目,但我犹豫是否将其作为标准。
如何为 monorepo 设置可扩展的“路径”tsconfig json?
解决方案
如果我理解正确,它是关于create-react-app
. 如果是这样,那么您需要多个文件夹,例如src
在 repo 根目录中。这需要配置 webpack 以避免弹出使用 rewire 并为多个顶级目录使用别名:
// config-overrides.js:
const {alias, configPaths} = require('react-app-rewire-alias')
module.exports = function override(config) {
alias(configPaths())(config)
return config
}
推荐阅读
- metal - iOS 13 中的 Metallib
- scikit-learn - 如何标准化 scikit-learn 中的 TF*IDF 或计数?
- nativescript - 如何通过按键拨打电话?
- javascript - 如何在数据表中获取搜索到的数据但不显示
- html - 使用与模态视图冲突的实体卡
- r - rdrobust:为局部多项式估计绘制图形
- xaml - 添加 LayoutOptions 后 Xamarin Forms SVG 图像 (FFImageLoading) 丢失
- c# - AES GCM 加解密:PHP VS C# BouncyCastle
- java - 如何在android中首字母大写,如何在android中首字母大写?
- xml - 从 PowerShell 命令读取 XML