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

时间:2018-05-17 17:56:55

标签: javascript google-closure-compiler

我正在尝试使用谷歌闭包编译器优化命令行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

使用谷歌闭包编译器进行编译,我得到了这个(在bundle.js中):

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

正如我所看到的,闭包编译器以某种方式将process视为未定义的外部类,其方法可以轻松调整/优化。

但它很糟糕 - process是node.js环境提供的外部资源,其属性可以自由重命名。此外,console无法简单优化。

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

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

我怎么能这样做?据我所知,closure有自己的API库,它们独立于命令行节点API。

1 个答案:

答案 0 :(得分:1)

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