项目需要对单个JS文件进行混淆压缩,开始时候使用的在线工具进行混淆的,但是总是有错误,所以开始计划自己本地来做这个事。
找了很多资料之后决定使用uglifyjs ,原因开源、稳定、使用简单,但是实际使用时遇到了问题,它明确说明--uglify-js 仅支持JavaScript(ECMAScript 5),这就造成想要使用uglifyjs必须将文件中的所有用到新语法的地方进行转换,所以首先先用babel转化。
步骤:
- 1 初始化npm
npm init -y
*2 安装babel
$ npm install --save-dev @babel/core @babel/cli @babel/preset-env
$ npm install --save @babel/polyfill
- 3 在根目录下配置babel.config.js
const presets = [
[
"@babel/env",
{
targets: {
edge: "17",
firefox: "60",
chrome: "67",
safari: "11.1",
},
useBuiltIns: "usage",
},
],
];
module.exports = { presets };
- 4 进行转换
npx babel xxx --out-dir xxx --presets=@babel/env
- 4 使用uglifyjs进行压缩混淆
npm install uglify-js -g
- 5 压缩混淆
uglifyjs aaa.js -m -o bbb.js