terser打包配置

两个地方可以配置terser,一个是在build里设置 minify: 'terser',然后添加属性 terserOptions

另一个是
terser依赖下载yarn add terser @rollup/plugin-terser
在plugins中添加terser, 需把build中minify设置为false

常用的一些配置项我放代码段里了

terser({
  // 压缩配置:控制代码压缩的行为和程度
  compress: {
    // 分号保持:是否将连续语句用分号连接成序列(可减少代码体积)
    sequences: isProd,
    // 处理函数参数:是否优化函数参数(如移除未使用的参数)
    arguments: isProd,
    // 删除console.log:是否移除代码中的console.log语句(仅在生产环境生效)
    drop_console: isProd && ['log'],
    // 删除debugger:是否移除代码中的debugger语句(仅在生产环境生效)
    drop_debugger: isProd,
    // 压缩次数:执行压缩的迭代次数(次数越多,压缩越彻底,但耗时更长)
    passes: isProd? 4: 1, 
    // 条件编译:定义全局常量,用于条件性地移除代码块
    global_defs: {
      '@DEV': JSON.stringify(isDev),     // 开发环境标识
      '@PROD': JSON.stringify(isProd),   // 生产环境标识
      '@TEST': JSON.stringify(isTest)    // 测试环境标识
    }
  },
  
  // 格式化配置:控制压缩后代码的输出格式(主要影响可读性)
  format: {
    // 分号:是否保留语句末尾的分号(false表示移除,减少代码体积)
    semicolons: false,
    // 简写:是否使用简写形式(如用'+'替代'Number()')
    shorthand: isProd,
    // 花括号:是否保留冗余的花括号(如if语句的单语句块)
    braces: !isProd,
    // 注释:是否保留代码中的注释
    comments: !isProd,
    // 美化:是否美化输出的代码(开发环境更易读,生产环境保持压缩)
    beautify: !isProd,
  },
  
  // 混淆配置:控制变量和函数名的替换(增强代码安全性)
  mangle: {
    // 顶级变量:是否混淆全局作用域中的变量和函数名
    toplevel: isProd,
    // eval中的代码:是否混淆eval()中的代码
    eval: isProd,
    // 保留类名:是否保留类名不被混淆(开发环境保留,便于调试)
    keep_classnames: isDev,
    // 保留函数名:是否保留函数名不被混淆(开发环境保留,便于调试)
    keep_fnames: isDev
  }
})
posted @ 2025-07-13 22:12  OvOGhostFace  阅读(80)  评论(0)    收藏  举报