在Typescript中out目录的目录结构相同,如何?

时间:2018-05-07 22:53:16

标签: node.js typescript ecmascript-6

问题dist Typescript输出目录的结构会根据我server/app.ts中导入的模块而发生变化。

目录server包含服务器(节点)文件,shared包含通用模型(类),而dist是out目录:

├───dist
├───server
│       app.ts
│       tsconfig.json
│
├───shared
│       customer.model.ts
|       index.ts
│
│── package.json
│── tsconfig.json

如果我使用以下tsc -p server运行server/app.ts

import * as path from 'path';

// ..
console.log('Starting the server...');

以下是输出 dist文件夹:

└───server
        app.js
        app.js.map

我导入shared/customer.model.ts后:

import * as path from 'path';
import { Customer } from '../shared';

// ..
console.log('Starting the server...');

变成:

└───server
    ├───server
    │       app.js
    │       app.js.map
    │
    └───shared
            customer.model.js
            customer.model.js.map
            index.js
            index.js.map

档案tsconfig.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../dist/server",
    "baseUrl": "./",
    "module": "commonjs"
  }
}

我希望有一个可预测的目录结构,如下所示,我知道我应该使用rootDirrootDirs选项,但我不会&#39知道如何:

├───server
│       app.js
│       app.js.map
│
└───shared
        customer.model.js
        customer.model.js.map
        index.js
        index.js.map

2 个答案:

答案 0 :(得分:1)

根据我对这个FAQ的理解,这应该产生所需的结构:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "rootDir": <path-to-the-parent of server, shared and dist>
    "outDir": "../dist",

答案 1 :(得分:1)

如果您想在dist/这样的

中获取文件夹结构
├───server
│       app.js
│       app.js.map
│
└───shared
    customer.model.js
    customer.model.js.map
    index.js
    index.js.map

我认为你的基础tsconfig应该是:

{
  "compilerOptions": {
    "outDir": "dist",
    "baseUrl": "./",
    "module": "commonjs"
  },
  "include": [
    "./server/**/*.ts",
    "./shared/**/*.ts"
  ]
}

在您的示例中,我认为您不需要两个tsconfig个文件。