从Babel迁移到SWC,如何在swc中使用@babel/plugin-transform-runtime进行沙箱隔离

我打算把一个库从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
    }
}
阅读 3.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题