TypeScript:当编译增加项目结构的深度时如何从父文件夹导入

Posted

技术标签:

【中文标题】TypeScript:当编译增加项目结构的深度时如何从父文件夹导入【英文标题】:TypeScript: How to import from parent folder when compilation adds depth to project structure 【发布时间】:2018-02-23 22:07:59 【问题描述】:

我的项目结构如下

dist
  |- src
  |   |- s.js
  |- test
      |- t.js
node_modules
results
  |- r.json
src
  |- s.ts
test
  |- t.ts
tsconfig.json
typings.d.ts

s.ts 导入 r.json 如下:

import * as results from '../results/r.json';

显然,这在编译后不起作用,因为 results 现在是两个文件夹...

解决此问题的正确方法是什么?下面是我的 tsconfig.json


  "compilerOptions": 
    "allowSyntheticDefaultImports": true,
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "inlineSourceMap": true,
    "lib": [
      "dom",
      "es2015"
    ],
    "moduleResolution": "node",
    "outDir": "dist/",
    "target": "es5",
    "typeRoots": [
      "node_modules/@types",
      "./typings.d.ts"
    ]
  ,
  "include": [
    "src/**/*.ts",
    "results/r.json",
    "test/**/*.ts",
    "./typings.d.ts"
  ],
  "exclude": [
    "node_modules"
  ],
  "compileOnSave": false,
  "atom": 
    "rewriteTsconfig": false
  

【问题讨论】:

【参考方案1】:

最好的方法是完全避免这种情况。尝试使深度级别匹配。

例如:

root
  dist-es5
    index.ts
    index.spec.ts
  src
    index.ts
    index.spec.ts

至于保持测试/规范代码不被分发,你可以有多个tsconfig.json 例如你可以看看:Setting up tsconfig with spec/test folder

【讨论】:

我听从了你的建议。在有更好的解决方案之前,我将 src 和 test 文件夹放在 app 文件夹下。这种方式在源代码中的结果文件夹也是 2 级。谢谢!

以上是关于TypeScript:当编译增加项目结构的深度时如何从父文件夹导入的主要内容,如果未能解决你的问题,请参考以下文章

发布 TypeScript 包时如何处理可选的对等依赖项?

第3章第314回TypeScript基础

Vue3拥抱TypeScript的完整项目结构

Vs2017 typescript 开发小问题

TypeScript

@typescript-eslint 编译错误不同于 linting 错误