SWC配置了minify但打包后的JS文件没有被压缩,怎么办?

Mc.艳兵 阅读 37

在Vue项目里用SWC替换了Babel后,按文档配置了minify: true,但打包后的JS文件看起来完全没压缩,连注释都没删。之前用terser的时候没问题,现在换成SWC就失效了…

我的配置是这样的:


module.exports = {
  chainWebpack: config => {
    config.module
      .rule('js')
      .use('swc-loader')
      .loader('swc-loader')
      .tap(options => {
        return {
          ...options,
          minify: true,
         jsc: {
            minify: {
              compress: true,
              removeConsole: true
            }
          }
        }
      })
  }
}

执行vue-cli-service build后,发现生成的app.js里还保留着函数参数的类型注解和console.log语句。是不是配置位置不对?或者需要额外的插件支持?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
司马爱红
你这个问题出在配置层级搞错了。swc的minify要放在jsc.minify下面,而且得用@swc/core而不是swc-loader处理压缩。改成这样:

module.exports = {
chainWebpack: config => {
config.module
.rule('js')
.use('swc-loader')
.loader('swc-loader')
.tap(options => {
return {
jsc: {
minify: {
compress: true,
mangle: true,
},
externalHelpers: true,
},
minify: true
}
})
}
}


另外确保生产环境才启用,removeConsole这些功能得自己写插件或者用babel插件配合。
点赞 3
2026-02-11 23:03