如何配置Terser使其压缩代码时不修改函数参数名
Terser 压缩时保留原始参数名的配置方法
测试代码示例:
function fname (arg1) {}
默认压缩流程中,Terser 会同时对函数名、局部变量、函数形参做短名替换,最终输出类似function a(b){}的结果。
你已知的--keep_fnames 选项仅能锁定函数自身的命名规则,完全不影响形参的重命名逻辑,要实现形参名原样保留,需要单独配置重命名规则。
命令行调用场景
在原有压缩命令中追加形参重命名锁定参数即可,完整示例:
terser 源文件路径.js --compress --mangle "params=false" --keep_fnames -o 输出文件路径.js
各参数的作用边界:
--keep_fnames:禁止重命名所有函数的名称--mangle params=false:完全禁止重命名函数形参,无论形参是否在函数逻辑中被实际引用,都会保留书写时的原始参数名- 常见易混淆点:
--keep_fargs属于压缩阶段的配置,仅控制“是否删除未被使用的形参”,不会影响形参的重命名逻辑,无法实现保留原始参数名的效果
配置文件/API 调用场景
如果是通过Node.js API、terser配置文件调用压缩逻辑,对应配置需要写在mangle选项块下,示例:
// Terser 配置示例 { compress: { keep_fargs: true // 按需设置是否保留未被使用的形参 }, mangle: { keep_fnames: true, params: false // 设为false即禁止重命名形参,保留原始名 } }
注意事项
- 保留形参名会小幅增大压缩后的代码体积,仅在需要通过
Function.prototype.toString解析参数名做依赖注入、元数据适配的场景开启即可 keep_fnames和形参重命名规则完全独立,不存在开启一个就自动生效另一个的联动逻辑
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

