mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-10-14 02:48:06 +08:00
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { createRequire } from 'node:module';
|
|
import { deepmerge } from '@fesjs/utils';
|
|
|
|
const esmRequire = createRequire(import.meta.url);
|
|
|
|
const Supported = ['chrome', 'opera', 'edge', 'firefox', 'safari', 'ie', 'ios', 'android', 'node', 'electron'];
|
|
|
|
export function buildSwcOptions(targets, config, isJsx, isTs, minify = false) {
|
|
if (config.swc?.loader?.cjsPkg) {
|
|
delete config.swc.loader.cjsPkg;
|
|
}
|
|
return deepmerge(
|
|
{
|
|
// sync: true,
|
|
env: {
|
|
targets: Object.keys(targets)
|
|
.filter(key => Supported.includes(key))
|
|
.reduce((memo, key) => {
|
|
memo[key] = targets[key];
|
|
return memo;
|
|
}, {}),
|
|
mode: 'usage',
|
|
|
|
coreJs: esmRequire('core-js/package.json').version,
|
|
},
|
|
jsc: {
|
|
parser: {
|
|
syntax: isTs ? 'typescript' : 'ecmascript',
|
|
jsx: isTs ? undefined : isJsx,
|
|
tsx: isTs ? isJsx : undefined,
|
|
},
|
|
experimental: isJsx
|
|
? {
|
|
plugins: [['swc-plugin-vue-jsx', {}]],
|
|
}
|
|
: undefined,
|
|
},
|
|
isModule: 'unknown',
|
|
minify: minify ? {} : false,
|
|
},
|
|
config.swc?.loader || {},
|
|
);
|
|
}
|