首页 > 解决方案 > 为什么 IntelliJ 会为 .spec 文件生成不同的导入语句?

问题描述

我想知道为什么 IntelliJAdd import statement在规范文件中使用时的工作方式不同:

设置非常简单。
在项目tsconfig.base.ts文件中,我们指定一个路径:

{
  "compilerOptions": {

    "paths": {
      "@idea-import-spec/data": [ "libs/data/src/index.ts" ]
    }
  },

在同一lib目录中,我们有 3 个文件:

util.ts导出一个常数:

export const TEST = 1;

和 2 个导入此常量的文件。
例如在data.ts

import {TEST} from "./util";

但是当我在文件中做同样的事情时data.spec.ts,它使用路径导入!

import {TEST} from "@idea-import-spec/data";

为什么会有所不同以及如何解决?

更多细节:

标签: typescriptintellij-idea

解决方案


Use path mappings from tsconfig.json设置为Always时,IDE 会在添加导入时尝试使用映射。但是,正如"@idea-import-spec/data"映射到libs/data/src/index.ts那样,反过来,从 重新导出所有内容lib/data.ts,添加映射导入到data.ts会导致循环依赖 - 这就是使用相对路径的原因。但data.spec.ts不会在桶中重新导出,因此在那里使用路径映射看起来很安全


推荐阅读