首页 > 其他分享 >【uglify-js】js压缩

【uglify-js】js压缩

时间:2023-02-27 11:12:36浏览次数:29  
标签:混淆 uglify -- 压缩 js sourcemap options

uglify-js

UglifyJS是个包含JS解释器、代码最小化、压缩、美化的工具集,是前端开发打包的最常用工具之一。打包后的js,没有注释内容,没有空格且合并到一行,简化了函数参数和变量名

  • 安装node.js
  • 通过命令 npm install uglify-js -g
  • 安装成功后,进入到需要压缩的js所在的目录。
    然后通过uglifyjs main.js -m -o main.min.js进行压缩,该命令的意思就是把main.js压缩成 main.min.js。

命令配置项

  -h, --help                  列出使用指南。
                              `--help options` 获取可用选项的详情。
  -V, --version               打印版本号。
  -p, --parse <options>       指定解析器配置选项:
                              `acorn`  使用 Acorn 来解析。
                              `bare_returns`  允许在函数外return。
                                              在压缩CommonJS模块或`.user.js `引擎调用被同步执行函数包裹的用户脚本 时会用到。
                              `expression`  不是解析文件,二是解析一段表达式 (例如解析JSON).
                              `spidermonkey`  输入文件是 SpiderMonkey
                                              AST 格式 (JSON).
  -c, --compress [options]    启用压缩(true/false)/指定压缩配置:
                              `pure_funcs`  传一个函数名的列表,当这些函数返回值没被利用时,该函数会被安全移除。
  -m, --mangle [options]       启用混淆(true/false)/指定混淆配置:
                              `reserved`  不被混淆的名字列表。
  --mangle-props [options]    混淆属性/指定压缩配置:
                              `builtins`  混淆那些与标准JS全局变量重复的名字。
                              `debug`  添加debug前缀和后缀。
                              `domprops`  混淆那些鱼DOM属性名重复的名字。
                              `keep_quoted`  只混淆没括起来的属性名。
                              
                              `regex`  只混淆匹配(该正则)的名字。
                              `reserved`  不需要混淆的名字的列表(即保留)。
  -b, --beautify [options]    是否美化输出(true/false)/指定输出配置:
                              `beautify`  默认是启用.
                              `preamble`  预设的输出文件头部。你可以插入一段注释,比如版权信息。它不会被解析,但sourcemap会因此调整。
                              `quote_style`  括号类型:
                                              0 - auto自动
                                              1 - single单引号
                                              2 - double双引号
                                              3 - original跟随原码
                              `wrap_iife`  把立即执行函数括起来。注意:你或许应禁用压缩配置中的`negate_iife`选项。 

 -o, --output <file>         输出文件路径 (默认 STDOUT). 指定 `ast` 或
                                `spidermonkey`的话分别是输出UglifyJS或SpiderMonkey AST。
    --comments [filter]         保留版权注释。默认像Google Closure那样,保留包含"@license"或"@preserve"这样JSDoc风格的注释。你可以传以下的参数:
                                - "all" 保留全部注释
                                - 一个合适的正则,如 `/foo/` 或 `/^!/`,保留匹配到的注释。 
                                注意,在启用压缩时,因为死代码被移除或压缩声明为一行,并非*所有*的注释都会被保留。
    --config-file <file>        从此JSON文件读取 `minify()` 配置。
    -d, --define <expr>[=value] 定义全局变量。
    --ie8                       支持IE8。
                                等同于在`minify()`的`compress`、 `mangle` 和 `output`配置设置`ie8: true`。UglifyJS不会默认兼容IE8。
    --keep-fnames               不要混淆、干掉的函数的名字。当代码依赖Function.prototype.name时有用。
    --name-cache <file>         用来保存混淆map的文件。
    --self                      把UglifyJS本身也构建成一个依赖包
                                (等同于`--wrap UglifyJS`)
    --source-map [options]      启用 source map(true/false)/指定sourcemap配置:
                                `base` 根路径,用于计算输入文件的相对路径。
                                `content`  输入sourcemap。假如的你要编译的JS是另外的源码编译出来的。
                                假如该sourcemap包含在js内,请指定"inline"。 
                                `filename`  输出文件的名字或位置。
                                `includeSources`  如果你要在sourcemap中加上源文件的内容作sourcesContent属性,就传这个参数吧。
                                `root`  此路径中的源码编译后会产生sourcemap.
                                `url`   如果指定此值,会添加sourcemap相对路径在`//#sourceMappingURL`中。
    --timings                   在STDERR显示操作运行时间。
    --toplevel                  压缩/混淆在最高作用域中声明的变量名。
    --verbose                   打印诊断信息。
    --warn                      打印警告信息。
    --wrap <name>               把所有代码包裹在一个大函数中。让“exports”和“global”变量有效。
                                你需要传一个参数来指定此模块的名字,以便浏览器引用。      

标签:混淆,uglify,--,压缩,js,sourcemap,options
From: https://www.cnblogs.com/wanglei1900/p/17158926.html

相关文章

  • vue3 门户网站搭建4-mockjs
    在后端接口没做好之前,为了更好的模拟接口返回,引入mockjs。它可以拦截ajax请求,生成伪数据。 1、安装:npmimokjs-D、npmi vite-plugin-mock-D2、在vite.confi......
  • 在ASP.NET WEBFORM项目中使用MVC4中的BundleConfig捆绑压缩JS和CSS
    1.在Web.config中配置<runtime><assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assemblyIde......
  • java.lang.String cannot be convert to JSONObject
    java.lang.StringcannotbeconverttoJSONObject在对String转换时,使用了JSONObject,导入的包不能是org.json 应该去下载​​http://sourceforge.net/projects/json-lib......
  • go语言中 json的omitempty标签导致protocbuf忽略默认值属性的问题
    解决方法:在生成protocol文件后,执行如下命令,去除omitempty标签即可。Get-ChildItem-Path"C:\path\to\directory"-Recurse-Filter"*.pb.go"|ForEach-Object{$......
  • JS日期时间增加减少
    new Date().add(Date.MONTH, +3).format('Y-m-d')  // 加三个月  new Date().add(Date.MONTH, -3).format('Y-m-d')  // 减三个月    new Date().add......
  • react的jsx和React.createElement是什么关系?面试常问
    1、JSX在React17之前,我们写React代码的时候都会去引入React,并且自己的代码中没有用到,这是为什么呢?这是因为我们的JSX代码会被Babel编译为React.createElement,我们来......
  • JSONArray与List集合之间的相互转换
    1.List转fastjsonJSONArrayListlist=newArrayList();JSONArrayjsonArray=JSONArray.parseArray(JSONArray.toString()); 2.fastjsonJSONArray转ListJSONA......
  • 【转载】vsCode JS代码格式化插件ESlint
    验证有效,Ctrl+S保存代码全格式化了。写这个主要是个人笔记,算不得重复造。转载自:https://blog.csdn.net/qq_34803821/article/details/849727811、安装插件VSCode中打开......
  • js-惰性函数
    1.需求:我们现在需要写一个foo函数,这个函数返回首次调用时的Date对象,注意是首次。使用场景:当我们每次都需要进行条件判断,其实只需要判断一次,接下来的使用方式都不会发......
  • springboot默认的json配置
    springboot默认的json配置1.@JsonIgnore返回前端时对应字段不进行序列化返回publicclassUser{@JsonIgnoreprivateStringname;}2.@JsonFormat日期格......