google-closure-compiler - 命令行编译生成的文件比在线版本大
问题描述
我正在命令行上测试谷歌闭包编译器。我拿了最新版本:
java -jar closure-compiler.jar --version
Closure Compiler (http://github.com/google/closure-compiler)
Version: v20190618
Built on: 2019-06-21 17:24
我正在生成我的 javascript 的压缩版本,如下所示:
java -jar closure-compiler.jar my_script.js > out.js
问题是生成的代码比我在https://closure-compiler.appspot.com/home使用在线服务时得到的代码大
我注意到命令行版本在开头添加了以下代码:
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,c,b){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(c.call(b,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,c,b){a!=Array.prototype&&a!=Object.prototype&&(a[c]=b.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
$jscomp.polyfill=function(a,c,b,d){if(c){b=$jscomp.global;a=a.split(".");for(d=0;d<a.length-1;d++){var e=a[d];e in b||(b[e]={});b=b[e]}a=a[a.length-1];d=b[a];c=c(d);c!=d&&null!=c&&$jscomp.defineProperty(b,a,{configurable:!0,writable:!0,value:c})}};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,b){return $jscomp.findInternal(this,a,b).v}},"es6","es3");
我的脚本中没有这样的代码:它来自哪里?我怎样才能产生与在线版本相同的输出?
解决方案
为了让编译器命令行作为 Web 服务工作,我刚刚添加了一个选项:
--language_out=ECMASCRIPT_2015
推荐阅读
- unique - 八度音阶中唯一(符号)的问题
- mysql - MySQL按A分区行,在组内按B排序,然后按每组第一行的C对所有这些组进行排序
- json - 将参数解析为 jq 过滤器
- excel - 使用 For Each 结构对 UserForm 中的控件进行排序。排序结束时出错
- java - 带有特殊字符的 Liquibase MS SQL 插入
- c# - 无法从“Microsoft.AspNetCore.Identity.IdentityResult”转换为“GdscBackend.Authentication.User”
- elasticsearch - 使用累积过滤器设计 ElasticSearch 查询,但过滤器内的选项具有“或”条件
- java - 执行 promise 后完成 observable
- botframework - Bot Composer - 创建并获取动态命名变量值
- python - 预期的“)”Pylance