我有一个项目,其中有一个很大的 global.d.ts 文件。 该项目在 webpack 4 + typescript 4 上运行,并使用 Awesome-typescript-loader 和 babel-loader。 该项目基本上已经很老了。 我正在使用 webpack 5、typescript 5 和 esbuild-loader 设置项目。
在里面,我有几个枚举,例如
declare enum MyEnum {
propertyOne = 'value1',
propertyTwo = 'value2',
//... etc
}
当编译后的代码中输出枚举时,它看起来像这样:
[
MyEnum.propertyOne,
MyEnum.propertyTwo,
//... etc
]
虽然我希望 MyEnum.propertyOne 和 MyEnum.propertyTwo 都是它们各自的值,“value1”和“value2”。
这意味着我希望这样:
[
'value1',
'value2',
//... etc
]
在我的 tsconfig 中,我将以下属性设置为 true:
declaration: true,
preserveConstEnums: true,
isolatedModules: true
此外,global.d.ts 文件包含在“include”数组和“typeRoots”数组中。
我还尝试将枚举设置为 const。
declare const enum MyEnum {
propertyOne = 'value1',
propertyTwo = 'value2',
//... etc
}
我还尝试过 ts-loader,只有在未将 transpileOnly 选项设置为 true 的情况下,它才会正确编译代码,但速度非常慢。
我想知道是否有某种技巧可以使 esbuild-loader 以这种方式或类似的方式工作,只是为了不使代码中断并保持足够的性能。
我也尝试过 babel-loader,但它也有同样的问题。
如果使用 esbuild-loader 或 babel-loader 都无法解决这个问题,我想知道是否还有其他加载器在性能上与 ts-loader 类似?
谢谢你。
我的建议是从您使用
declare
的地方删除 const
:
const enum MyEnum {
propertyOne = 'value1',
propertyTwo = 'value2',
//... etc
}