TS/TSX
Farm 支持开箱即用地编译Js/Jsx/Ts/Tsx
,并默认将Jsx/Tsx
编译为 React。
Farm 使用 SWC 来编译脚本,Farm 为脚本编译设置了合理的默认配置。 另外,您可以使用compilation.script
来配置如何编译脚本文件。 有关详细信息,请参阅 compilation.script。
配置 Swc 解析器
您可以通过compilation.script.parser
配置 SWC 解析器。 请参阅 https://swc.rs/docs/configuration/compilation#jscparser。
例如,如果你想启用装饰器,你可以设置compilation.script.parser.esConfig.decorators
(如果模块是 TS,则设置 tsConfig.decorators):
默认情况下,Farm 为.jsx|.tsx
文件设置jsx: true
。 其他字段默认为 SWC 的默认值。
配置目标执行环境
运行项目时使用compilation.script.target
配置目标环境,Farm 将其默认设置为ESNext
。
此选项可以与compilation.presetEnv
一起使用,以针对旧浏览器优雅地降级您的项目。 例如,您可以将 target 设置为 ES5
并启用 presetEnv
,那么您的项目将完全降级到 ES5。
有关presetEnv
的更多信息,请参阅 Polyfill。
装饰器
装饰器默认不启用, 可以通过设置 compilation.script.parser.tsConfig.decorators
为 true
来启用装饰器。
Farm 提供了一个装饰器的示例,可以看 https://github.com/farm-fe/farm/tree/main/examples/decorators
默认情况下, Farm 不会转译
node_modules
下的装饰器, 参考 compilation.script.decorators.excludes.
使用 SWC 插件
SWC Plugins 可以直接在 Farm 中使用,例如我们在 Farm 中使用 swc-plugin-vue-jsx 来编译 vue jsx:
有关更多详细信息,请参阅使用插件。
Vite 风格的 import.meta.glob
Farm 完整支持 Vite 风格的 import.meta.glob
, 参考 glob import.
例如:
将会被编译成以下结果
使用 { eager: true }
后:
将会被编译成以下结果:
支持数组形式:
支持通过 !
排除某些匹配:
import.meta.glob
参数必须全部是字面量,不能使用表达式。import.meta.glob
在编译时处理和转换,在运行时不存在。