如何使用 google 闭包编译器优化命令行 node.js Javascript 工具?

How to optimize a command-line node.js Javascript tool with the google closure compiler?

我正在尝试使用 google 闭包编译器优化命令行 Java 脚本工具。

我有以下Java脚本源:

// 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 闭包编译器编译,我得到这个(在 bundle.js 中):

'use strict';process.b("/");JSON.stringify(process.a);

如我所见,闭包编译器以某种方式将 process 视为未定义的外部 class 其方法可以很容易地 tuned/optimized.

但不好 - process 是 node.js 环境提供的外部资源,其属性可以自由重命名。此外,console 不能简单地优化掉。

我认为应该存在某种方式,我们可以指示闭包编译器了解命令行节点环境,并按应有的方式处理其全局实体。

类似的外部库也应该这样做。我正在考虑 Java 中的 "import" 或 C/C++ 中的头文件。

我该怎么做?据我所知,闭包有自己的 API 库,这些库独立于命令行节点 API.

Externs就是你想要的。 AFAIK Closure Compiler 的目的是使代码更小(对于浏览器),而不是更快。