javascript - 如何使用 google 闭包编译器优化命令行 node.js Javascript 工具?
问题描述
我正在尝试使用 google 闭包编译器优化命令行 Javascript 工具。
我有以下 Javascript 源代码:
// main.js
console.log("test");
process.chdir("/");
console.log("arg: " + JSON.stringify(process.argv));
我的标志文件如下(closure.conf
):
--compilation_level=ADVANCED
--env CUSTOM
--language_in=ECMASCRIPT5_STRICT
--language_out=ECMASCRIPT5_STRICT
--warning_level=VERBOSE
--error_format=STANDARD
--strict_mode_input
--dependency_mode=NONE
--rewrite_polyfills=false
--module_resolution=NODE
--jscomp_off=checkVars
--package_json_entry_names es2015
--process_common_js_modules
我正在使用以下命令编译它:
java -jar path/to/closure/compiler.jar --flagfile ./closure.conf --js main.js --js_output_file bundle.js
使用 google 闭包编译器进行编译,我得到了这个(in bundle.js
):
'use strict';process.b("/");JSON.stringify(process.a);
正如我所看到的,闭包编译器以某种方式认为process
是一个未定义的外部类,其方法可以轻松调整/优化。
但这很糟糕 -process
是 node.js 环境提供的外部资源,其属性可以自由重命名。此外,console
不能简单地优化出来。
我认为应该存在某种方式,我们可以指示闭包编译器了解命令行节点环境,并按应有的方式处理其全局实体。
类似的外部库也应该这样做。我正在考虑类似 Java 中的“导入”或 C/C++ 中的头文件之类的东西。
我怎么能这样做?据我所知,闭包有自己的 API 库,它们独立于命令行节点 API。
解决方案
外部是你想要的。AFAIK Closure Compiler 的目的是使代码更小(对于浏览器),而不是更快。
推荐阅读
- draw - 寻找绘制科学草图的程序
- javascript - React 集成异步后端调用
- python - 检查多个 pd.DataFrames 是否相等
- python - 使用 Django 外键,链接到 HTML 页面
- c# - 多个请求访问数据库 - 等待缓存可用
- html - 如何强制在 iFrame 的新选项卡上打开链接?
- pandas - 如何合并多个 DataFrame 并为重复键累积值?
- sql - 如何获得 STRING 值之间的 MAX() 和 SUM() 值?
- clojure - 为什么 lein repl 会阻止 STDERR
- json - 将 Java 列表序列化为没有字段名称的 JSON