我想合并一些文件(带有静态导入的文件),但不必合并某些文件(带有动态导入的文件)。
我该如何告诉打字稿?
该演示由4个文件,一个具有main()函数的索引以及3个类A,B和C组成。
当前的打字稿配置:
{
"compilerOptions": {
"allowJs": true,
"target": "es2017",
"module": "esnext",
"outDir": "lib",
"sourceMap": false,
"strict": true,
"noImplicitAny": false,
"removeComments": true,
"lib": [
"esnext"
],
},
"compileOnSave": true,
"include": [
"src/**/*.ts",
"src/**/*.js"
],
"exclude": [
"node_modules",
"old"
]
}
src / index.ts
'use strict';
//@ts-check
import { C } from './c/c'; // I want this one to be merged in index
export const main = async () => {
const c = new C();
c.log();
}
main();
src / c.ts
'use strict';
//@ts-check
import { B } from '../b/b'; // I want this one to be merged in c, so in index
export class C {
async log() {
const A = await import('/' + 'a.js');
const a = new A();
a.log();
const b = new B();
b.log();
}
}
src / b.ts
'use strict';
//@ts-check
export class B {
async log() {
console.log('b');
}
}
src / a.ts
'use strict';
//@ts-check
export class A {
log() {
console.log('a');
}
}
目前我知道了:
- lib/a/a.js
- lib/b/b.js
- lib/c/c.js
- lib/index.js
但是我想要:
- lib/a.js // Apart from index, because it is dynamically imported
- lib/index.js
有什么想法吗?
是否有装饰器告诉打字稿将c和b合并到索引中,然后放在索引旁?
我想不必添加任何构建层(例如webpack),而只使用打字稿。
答案 0 :(得分:0)
我很确定仅使用TypeScript编译器就无法做到这一点。 (您可以使用项目引用和outFile
手动合并文件组,但是仍然需要AMD或SystemJS模块运行时。)您将需要使用单独的工具,例如Webpack。 IMO确实如此,但重要的是TypeScript团队的意见。