打字稿:compilerOptions.outDir和non-ts模块

时间:2019-04-03 07:38:06

标签: typescript module

我对非ts模块(文本资产)有一个问题,即它们没有像tsconfig.json中配置的那样被继承到outDir(或者我做的不正确)。

这是最简单的复制案例

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

当编译的javascript尝试将我的文本模块加载为http://localhost:8082/text.dat时,这会导致HTTP 404,但是原始文件位于/ src文件夹中,并且不会被复制到/ public。

我想念什么?

FWIW,完整的案例案例来源位于https://github.com/duzenko/typescript-non-ts-module-bundle

1 个答案:

答案 0 :(得分:0)

很遗憾,打字稿编译器Typescript Github Issue here内不支持此功能。

如果您使用的是yarn或NPM,我建议您做的是拥有一个脚本,该脚本可以在成功编译后 将这些文件移动到正确的位置。假设您在src src/foo/bar.biz中有一个文件。在运行tsc并输出到./build目录之后,然后运行手册cp src/foo/bar.biz build/foo/bar.biz