#typescript #module
#typescript #модуль
Вопрос:
У меня проблема с модулями, отличными от ts (текстовые ресурсы), в том, что они не переносятся во внешний каталог, как настроено в tsconfig.json (или я делаю это неправильно).
Вот самый простой пример воспроизведения
// /src/main.ts
import text from 'text.dat'
console.log( text )
// /src/a.d.ts
declare module 'text.dat' {
const value: string;
export default value
}
// /tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "system",
...
"outFile": "./public/bundle.js",
"outDir": "./public",
...
// /public/a.html
...
<script type="text/javascript" src="bundle.js"></script>
<script>
SystemJS.import('main');
</script>
...
Это приводит к HTTP 404, когда транспилированный javascript пытается загрузить мой текстовый модуль какhttp://localhost:8082/text.dat но исходный файл находится в папке /src и не копируется в /public.
Чего мне не хватает?
FWIW полный исходный код варианта воспроизведения находится по адресуhttps://github.com/duzenko/typescript-non-ts-module-bundle
Ответ №1:
К сожалению, это не поддерживается в компиляторе typescript Проблема с Typescript Github здесь
Что я бы порекомендовал вам сделать, если вы используете yarn или NPM, так это иметь скрипт, который перемещает эти файлы в нужное место после успешной компиляции. Допустим, у вас есть файл в src src/foo/bar.biz
. после запуска tsc
и вывода в ./build
каталог запустите руководство cp src/foo/bar.biz build/foo/bar.biz