@wiajs/ui
Version:
wia app ui packages
92 lines (88 loc) • 4.71 kB
JavaScript
/**
* 代码转换时,控制语法转换与功能补全
* 目标 node,超es6语法转换,不补全
* 用于默认转换和eslint
*/
const loose = true;
const presets = [
'@babel/preset-react', // 支持 jsx 语法,如果前端项目中使用jsx,需安装并设置
[
'@babel/preset-env', // 预设,已经包含大部分新语法
/*
1、影响语法转换与功能补全,不指定则将代码转为ES5语法,补全由useBuiltIns决定
2、指定目标targets,则目标环境已支持的语法、功能不转换、不补全,减少代码
3、库、后端打包,无需考虑语法转换和补全,目标设置为node,转换、补全留给前端项目完成
前端项目需考虑浏览器功能缺失,建议设置较低浏览器版本,避免功能不全报错
后端项目或库,需支持特定node版本,可设置node版本,引入补全代码,可支持特定版本。
*/
{
loose,
// targets: 'defaults', // '> 0.5%, last 2 versions, Firefox ESR, not dead'
targets: {
// 浏览器设置规则请参加:https://github.com/browserslist/browserslist
// browsers: ['>1%', 'last 3 versions', 'Firefox ESR', 'ie >= 11'],
node: 'current', // 按系统安装的node版本作为目标,后台项目
// node: '14.0', // 指定兼容到node版本,避免低版本node无法运行,后端项目需要
},
/*
1、用于补全,false不补全,由外部polyfill或runtime corejs补全,否则运行报错
2、库、后端无需补全,但需开启runtime的 helpers,引用辅助函数代替内置,减少体积
3、usage 通过自动添加使用方法的的corejs引用实现补全,用于前端项目打包
如:require("core-js/modules/es.promise.js");
4、需安装 core-js,属于替换全局的补全方案
5、UMD页面加载库,需通过runtime的corejs补全,避免污染全局
*/
// useBuiltIns: 'usage', // 'usage' | 'entry' | false, 缺省为 false
// usage 需安装并配置corejs版本,defaults to "2.0"
// corejs: `${require('core-js/package.json').version}`,
/*
1、是否将es6模块语法改成其他模块语法,如cjs
2、false则保留es6语法,可以被rollup或webpack打包时摇树,减少包大小
3、后端库不需要摇树,直接设置为cjs,除非前端库输出es6版本,方便用户输出时摇树
*/
modules: false, // 'cjs' | 'auto' | false, 缺省 auto
},
],
];
const plugins = [
['@babel/plugin-proposal-class-properties', { loose }],
['@babel/plugin-proposal-private-methods', { loose }],
['@babel/plugin-proposal-nullish-coalescing-operator'],
['@babel/plugin-proposal-optional-chaining'],
['@babel/plugin-transform-react-jsx'],
[
/*
1、将语法转换用到的辅助函数(包括异步await)从内置改为外部runtime引用,避免重复代码
2、需安装 @babel/runtime-corejs3 是 @babel/runtime、runtime-corejs2 的升级版
3、corejs: 3,所有用到的es6功能(不管targets),通过runtime-corejs3引用实现补全。
umd打包页面加载库时,代替usage实现补全,不污染全局空间。
4、与usage不同的是转换方法名称,不污染全局空间,usage 引用core-js/modules模块,如
require("core-js/modules/es.promise.js");
替换为:
var _promise = require("@babel/runtime-corejs3/core-js-stable/promise");
5、usage 与 corjs并存时,自动用runtime替换core-js/modules模块
6、usage时,不使用 runtime,文件引用大量 core-js/modules,使用后引用模块数大量减少
*/
'@babel/plugin-transform-runtime',
{
// helpers: true, // 语法辅助函数,缺省 true,将内置改为对引用,减少文件大小
// corejs: 3, // false, 2, 3, 缺省 false.
// require("@babel/runtime/helpers/asyncToGenerator")
// 设置为 true/false 好像无变化
// regenerator: true, // asynt/await支持函数asyncToGenerator转换,缺省 true
// absoluteRuntime: false, // runtime 路径,缺省false
// 指定runtime 版本,如 runtime-corejs3@7.20.1,缺省 @babel/runtime@7.0.0
version: `^${require('@babel/runtime-corejs3/package.json').version}`,
},
],
];
module.exports = {
presets,
plugins,
only: ['./src'],
ignore: ['./dist', './lib'],
sourceMaps: false, // boolean | "inline" | "both"
sourceType: 'unambiguous', // "script" | "module" | "unambiguous" 缺省 "module"
comments: true, // 保留备注 缺省 true
minified: false, // Default: false,压缩代码
};