Как заменить псевдонимные пути реальными в сгенерированном коде typescript?

#typescript #typescript2.0

#typescript #typescript2.0

Вопрос:

Допустим, у вас есть следующая структура файла:
.
├── package.json
├── src
│   └── app.ts
├── test
│   └── test.ts
└── tsconfig.json

В test.ts мы имеем:

 import {App} from 'project/app';
new App().ping();
  

tsconfig.json конфигурация следующая:

 {
    "compilerOptions": {
        "module": "commonjs",
        "noLib":false,
        "target": "es6",
        "sourceMap": true,
        "outDir": "target/build",
        "baseUrl": "./",
        "moduleResolution": "node",
        "paths": {
            "project/*": ["./src/*"]
        }
    },
    "include": [
        "test/**/*.ts"
    ]
}
  

Это будет скомпилировано без ошибок, и мы получим

 target/
└── build
    ├── src
    │   ├── app.js
    │   └── app.js.map
    └── test
        ├── test.js
        └── test.js.map
  

Но в сгенерированном test.js все равно будет иметь

 const app_1 = require('project/app');
  

И мы получим ошибку, если попытаемся запустить этот код, поскольку нет такого понятия, как папка проекта.

Вопрос в том, каков наилучший способ иметь псевдонимы в typescript, которые соответственно переписываются в сгенерированном коде. Если этого невозможно достичь исключительно с помощью tsc, каков будет наилучший подход для перезаписи путей в сгенерированных файлах js?

Мое решение: ввести второй файл tsconfig для компиляции src файлов в target/build/node_modules/project папку. Это работает, но на самом деле это означает, что мы дважды компилируем один и тот же набор файлов.

Кроме того, это не поможет, если сказать, что я также хочу иметь псевдонимы путей в коде src.