使用Typescript 3构建到dist /文件夹时,保持src /文件夹结构

时间:2018-08-31 19:35:01

标签: typescript build tsc transpiler

我有一个具有以下结构的打字稿nodejs服务器:

tsconfig.json
package.json
src/
    middleware/
    utils/
    index.ts
dist/
    middleware/
    utils/
    index.ts

使用Typescript 2时,我可以将项目从src /转换为dist /文件夹,并可以使用我的目录结构的镜像。

随着Typescript 3的发布,他们引入了project references,并改变了代码被转换为输出目录的方式。现在tsc以这样的嵌套方式输出到dist /文件夹:

dist/
    src/
        middleware/
        utils/
        index.ts

我的tsconfig.json是:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "allowJs": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "resolveJsonModule": true,
    "declaration": false,
    "outDir": "dist/",
    "lib": [
      "es7",
      "dom"
    ]
  },
  "include": [
    "src/"
  ]
}

如何配置Typescript将src /文件夹作为镜像输出到dist /文件夹中?

6 个答案:

答案 0 :(得分:4)

输出目录的结构由rootDir的{​​{1}}控制。 See documentation here,将其设置为compilerOptions应该可以解决问题。

./src

答案 1 :(得分:3)

最初转换为Typescript项目时,我遇到了类似的问题。我还设置了resolveJsonModule: true,并将src目录复制到了输出dist目录。

根本原因是我的源文件之一require在项目根目录下有package.json。一旦我删除了它,TSC便不再将src添加到dist目录中。

简而言之,请确保您不需要src目录之外的文件。

此处的解释性常见问题解答:https://github.com/Microsoft/TypeScript/wiki/FAQ#why-does---outdir-moves-output-after-adding-a-new-file

答案 2 :(得分:1)

除了指定 compilerOptions.outDir 外,还要在 compilerOptions.rootDir 中指定 tsconfig.json

{
  "compilerOptions": {
     // ...
    "outDir": "dist",
    "rootDir": "./",
    // ...
  }
}

然后在 $ tsc -b 文件所在的文件夹中运行:tsconfig.json

答案 3 :(得分:0)

从TypeScript 2升级到3本身不应该改变行为。如果我们可以确认确实如此,那可能是一个错误。无论如何,请检查rootDir编译器选项是否指向您的src目录而不是父目录,因为rootDir下的结构就是{{1}下的镜像}。

答案 4 :(得分:0)

resolveJsonModule: true添加到tsconfig.json后出现问题

答案 5 :(得分:0)

您可以在 ./src 中的文件中从 src/entities/Post -> ../entities/Post 更改文件导入

这会更改 dist 文件夹中的导入。