首页 > 解决方案 > 如何使用 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。

标签: javascriptgoogle-closure-compiler

解决方案


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


推荐阅读