#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.