首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为monorepo扩展“path”tsconfig文件

为monorepo扩展“path”tsconfig文件
EN

Stack Overflow用户
提问于 2019-12-09 20:48:26
回答 2查看 6.7K关注 0票数 17

我有这样的文件夹结构:

代码语言:javascript
运行
复制
- mono-repo
  tsconfig.paths.json
  - Website
   tsconfig.json
   - src
     test.ts
     index.ts
  - Tool
   - src
    index.ts
代码语言:javascript
运行
复制
// mono-repo/tsconfig.paths.json
{
  "compilerOptions": {
    "paths": {
      "tool": ["Tool/src"],
    }
  }
}
代码语言:javascript
运行
复制
// mono-repo/Website/src/index.ts
import { test } from "test";
import { tool } from "tool";

test(tool);

我希望能够扩展tsconfig.paths.json,以便每个包都能为其他包正确地输入模块。

失败尝试1

代码语言:javascript
运行
复制
// mono-repo/Website/tsconfig.json
{
  "extends": "../tsconfig.paths.json",
  "compilerOptions": {
    "baseUrl": "./src",
  }
}

问题:找不到模块“工具”。添加到路径中的baseUrl将导致mono-repo/Website/src/Tool/src。这不是一条真正的道路。

失败2

代码语言:javascript
运行
复制
// mono-repo/Website/tsconfig.json
{
  "extends": "../tsconfig.paths.json",
  "compilerOptions": {
    "baseUrl": "../",
  }
}

问题:不能从“测试”导入测试。baseUrl不是项目src。除了相对路径之外,任何东西都是不可出口的。

函数式但丑陋尝试3

代码语言:javascript
运行
复制
// mono-repo/tsconfig.paths.json
{
  "compilerOptions": {
    "paths": {
      "tool": ["../../Tool/src"],
    }
  }
}
代码语言:javascript
运行
复制
// mono-repo/Website/tsconfig.json
{
  "extends": "../tsconfig.paths.json",
  "compilerOptions": {
    "baseUrl": "./src",
  }
}

问题:可以工作,但是假设扩展tsconfig.paths.json的每个tsconfig的tsconfig.paths.json总是位于mono-repo下面的两个目录。这对于我的项目来说是正确的,但我不太愿意把它作为一个标准。

如何为monorepo?设置可扩展的“路径”tsconfig json?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-02 13:31:19

需要知道的是,tsconfig扩展是一个overridenot a merge。有了这些信息,您就可以理解通过扩展基本的tsconfig来实现的目标不能像您期望的那样工作。

此外,使用paths选项应该始终与baseUrl一起工作,以解决解决问题。

尽管如此,这里有一个解决方案,您可以使用它来解决这个问题。

在项目的根级创建一个tsconfig.json,其行为:

代码语言:javascript
运行
复制
"paths": {
  "~/*": ["../../../mono-repo/*/src"]
}

这意味着在每个子包中,您可以扩展该tsconfig文件,然后将您的src目录指定为baseUrl。然后,您将能够导入如下内容:

代码语言:javascript
运行
复制
import { tool } from "~/Tool";

希望这是清楚的,如果有什么东西丢失了,请告诉我

票数 4
EN

Stack Overflow用户

发布于 2020-03-09 10:02:11

如果我正确理解的话,那是关于create-react-app的。如果是这样,那么您需要回购根目录中的多个文件夹,如src。这需要配置webpack,以避免弹出、重新连接并将别名用于多个顶级目录:

代码语言:javascript
运行
复制
// config-overrides.js:

const {alias, configPaths} = require('react-app-rewire-alias')

module.exports = function override(config) {
  alias(configPaths())(config)
  return config
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59256368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档