LECP 通过 targets 配置项来指定代码的兼容目标环境,支持现代 JavaScript 语法降级。
import { defineConfig } from "@shined/lecp";
export default defineConfig({
targets: {
chrome: 55,
node: "20.11.0"
}
});LECP 会根据构建格式自动选择合适的默认目标:
{ node: "20.11.0" }{ chrome: 55 }推荐自行设置 target,明确项目支持的最低版本。
targets: {
chrome: 55, // Chrome 55+
}更多值参考 browserlist 官方文档
targets: {
node: "20.11.0" // Node.js 20.11.0+
}targets: {
chrome: 55,
node: "18.12.0",
safari: 12
}
UMD 模式下同时设置 targets.chrome 和 targets.node 会导致构建失败,因为 output.chunkFormat 无法同时满足两个目标的要求。
解决方案:
output.chunkFormatLECP 不会自动引入 polyfill,只做语法降级。通常业务系统会自动引入 polyfill(core-js)。
LECP 内置了一些 Node.js 的 polyfill,确保在浏览器环境中也能正常使用。对于面向浏览器和 Node.js 混合环境的库,会自动开启。
详细参考 node-polyfill-webpack-plugin
async/await 语法减少 polyfill 体积,提升运行性能
import.meta.dirnameimport.meta.filenameshims 实现更加小巧
可以不输出 cjs 格式