我打算把一个库从babel转义改成用swc转义,但是遇到了一些问题
我打包后会带有 Promise、Map、Set 这些polyfill污染我的全局作用域
但是我又不知道如何在swc中使用@babel/plugin-transform-runtime进行沙箱隔离
所以发帖求助
下面是主要的打包程序代码 原先的,使用的babel
const buildBundle = async function buildBundle() {
const rollupConfig = {
input: paths.input,
plugins: [
sourcemaps(),
commonjs(),
nodeResolve({
extensions,
}),
babel({
exclude: /^(.+\/)?node_modules\/.+$/,
babelHelpers: 'runtime',
"presets": [
[
"@babel/preset-env",
],
[
"@babel/preset-typescript"
]
],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"corejs": 3
}
]
],
}),
],
};
const bundle = await rollup(rollupConfig);
outputBundle = bundle;
return bundle;
}
然后我尝试修改为 swc
const buildBundle = async function buildBundle() {
const rollupConfig = {
input: paths.input,
plugins: [
sourcemaps(),
commonjs(),
nodeResolve({
extensions,
}),
swc({
rollup: {
exclude: /^(.+\/)?node_modules\/.+$/,
},
}),
],
};
const bundle = await rollup(rollupConfig);
outputBundle = bundle;
return bundle;
}
.swcrc文件
{
"jsc": {
"parser": {
"syntax": "typescript",
"dynamicImport": true
},
"transform": {
"regenerator": {
"runtime": true
}
},
"loose": true,
"externalHelpers": true
},
"env": {
"targets": [
"last 2 versions",
"> 1%",
"iOS 8",
"Android >= 4.4"
],
"mode": "usage",
"coreJs": 3
}
}
https://github.com/swc-projec... 是不是这个?