首页 > 解决方案 > tsconfig 中 rootDir 和 baseUrl 的区别

问题描述

tyescript中的rootDir和baseUrl有什么区别?

根据 ts 文档

基本网址

Base directory to resolve non-relative module names. See Module Resolution documentation for more details.

和根目录

Specifies the root directory of input files. Only use to control the output directory structure with --outDir.

在我的 tsconfig 中,我添加了“baseUrl”:“app/javascript/src”,

并没有添加任何东西

rootDir

那是对的吗?(这可行,但我不确定这是否正确)

更新:rootDir 给了我错误,因为我使用的是绝对路径

这是我的 tsconfig。(baseUrl 没有)

{
  "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "es6",
      "dom"
    ],
    "module": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "jsx": "react",
    "target": "es5",
    "allowSyntheticDefaultImports": true,
    "baseUrl": "app/javascript/src",
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "skipLibCheck": true,
    "allowJs": true,
    "strict": true,
    "outDir": "app/javascript/.dist",
  },
  "exclude": [
    "node_modules",
    "**/*.js",
    "**/.jsx"
  ],
  "include": [
    "**/*.ts",
    "**/*.tsx"
  ],
  "compileOnSave": false
}

在 webpack 中,我正在解析这样的路径

  resolved_paths: ['app/javascript/src', 'app/javascript']

标签: typescript

解决方案


我添加了“baseUrl”:“app/javascript/src”,对吗?

否。如果您正在为您的项目指定包含的文件(如 所示src),您应该使用rootDir(如前所述Specifies the root directory of input files.)。

您没有收到错误的原因

baseUrl仅对非相对导入生效。您的代码大多具有相对导入,例如import something from './something',因此它对您没有任何不利影响。


推荐阅读