typescript - 在 NextJS 中使用 ts-loader 自定义转换器
我已经爱上了 ts-runtime-checks 库,并且想把它整合到我的 NextJS 项目中:问题是它是一个代码转换器(会改变代码的编译方式),需要在主 TypeScript 编译之前运行。有没有办法将这个插件干净地挂载到 NextJS 的编译过程里?
如果使用 ts-loader 进行编译,这个库有一个良好且易于设置的方式。根据他们的文档,具体如下:
const TsRuntimeChecks = require("ts-runtime-checks").default;
options: {
getCustomTransformers: program => {
before: [TsRuntimeChecks(program)]
}
}
我在这个问题中看到,有一种方法可以通过修改项目的 next.config 来调用 ts-loader,但是,这似乎只是用于编译附加文件,我无法将其作为预编译步骤使用。
我还在 Next 文档中读到,编译实际上使用的是 SWC 编译器,并且暴露了一些添加自定义插件的实验性选项。此外,虽然这些插件似乎可能必须基于 WASM,但它也声称可以直接输入节点包名称作为插件。然而,以下 next.config 并不起作用(出现 failed to invoke <ts-runtime-checks path> as js transform plugin 错误):
const TsRuntimeChecks = require("ts-runtime-checks").default;
const nextConfig = {
reactStrictMode: true,
// add ts runtime checks to pre-compilation
experimental: {
swcPlugins: [[ 'ts-runtime-checks', {} ]],
},
}
有没有办法让 Next 原生运行这个 transformer?我应该尝试为这个库构建一个 SWC WASM 包装器吗?希望能从任一方向获得一些见解…