为monorepo扩展“ paths” tsconfig文件

问题描述 投票:3回答:1

我有这样的文件夹结构:

- 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",
  }
}

Issue:是有效的,但假设扩展tsconfig.paths.json的每个tsconfig的baseUrl始终是mono-repo下的两个目录。目前,这对于我的项目是正确的,但是我很犹豫将其作为标准。


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

typescript tsconfig monorepo
1个回答
0
投票

如果我理解正确,那就是关于create-react-app。如果是这样,则在回购根目录中需要多个文件夹,例如src。这需要配置webpack,因此需要弹出或重新接线。将alias用于多个顶级目录:

// config-overrides.js:

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

module.exports = function override(config) {
  alias(configPaths())(config)
  return config
}

您从问题的顶部(而不是尝试)的配置看来不错,我的意思是:

{
  "compilerOptions": {
    "paths": {
      "tool": ["Tool/src"],
    }
  }
}

[create-react-app还有其他限制,以避免在根目录./之外进行访问,因此,像../../Tool/src这样的相对上层路径可能无法工作,但需要尝试]]

© www.soinside.com 2019 - 2024. All rights reserved.