TSC продолжает создавать вложенные папки во внешней папке

#json #typescript #tsc #tsconfig

#json #typescript #tsc #tsconfig

Вопрос:

Всем привет!

Я работаю над небольшим проектом с TypeScript, который требует, чтобы у меня было два разных tsconfig.json файла, которые оба наследуются от моего tsconfig.base.json файла.

Я столкнулся с проблемой компилятора, создающего вложенные папки в моем объявленном outDir , что отчасти сводит меня с ума.

Вот мой tsconfig.base.json файл:

 {
    "compilerOptions": {
      "target": "es6",
      "module": "commonjs",
      "resolveJsonModule": true,
      "lib": ["es6", "dom"],
      "esModuleInterop": true,
    },
    "exclude": [
      "node_modules"
    ]
}
  

и вот как выглядит производный tsconfig.src.json :

 {
    "extends": "./tsconfig.base.json",
    "compilerOptions": {
        "rootDirs": ["./src/ts", "."],
        "outDir": "./src/js/"
    },
    "exclude": [
        "page/**/*.ts",
        "tsconfig.page.json"
    ],
    "include": [
        "src/**/*.ts",
        "service_account.json"
    ],
}
  

Моя текущая структура проекта выглядит следующим образом:

 .
 -- node_modules/
 -- src/
|     -- js/ (this is where my typescript files should be compiled to)
|     -- ts/ (this is where all my ts files are located)
 -- tsconfig.base.json
 -- tsconfig.src.json
 -- service_account.json

  

Теперь, если я запускаю свой build:backend скрипт ( "build:backend": "tsc -p ./tsconfig.source.json" ), компилятор создает две вложенные папки, что придает структуре моего проекта следующий вид:

 .
 -- node_modules/
 -- src/
|     -- js/ (this is where my typescript files should be compiled to)
|         -- src/
|             -- ts/ (here are all compiled js files now)
|     -- ts/ (this is where all my ts files are located)
 -- tsconfig.base.json
 -- tsconfig.src.json
 -- service_account.json
  

У кого-нибудь есть идея, что вызывает эту проблему?

Я благодарен за любую помощь! Заранее спасибо, ребята!

Ответ №1:

Вам нужно объединить все inputs в одну папку и все outputs в папку, которая не включена в inputs папку.

Пример исправления

 {
    "extends": "./tsconfig.base.json",
    "compilerOptions": {
        "rootDir": "/src/ts",
        "outDir": "./src/js"
    },
    "exclude": [
        "page/**/*.ts",
        "tsconfig.page.json"
    ]
}
  

И также перемещать service_account.json в src/ts .