Google闭包编译器进程node_modules

时间:2017-01-24 16:08:51

标签: google-closure-compiler

我正在尝试谷歌闭包编译器作为webpack的替代品。 目前我正在使用以下编译我的前端文件夹中的所有文件:

java -jar closure-compiler.jar --process_common_js_modules --js_output_file=static/out.js 'lib/js/src/frontend/*.js'"

问题是其中一个文件需要React& ReactDOM。 我收到以下错误:

lib/js/src/frontend/app.js:7: ERROR - Failed to load module "react"
var React    = require("react");
           ^^^^^^^^^^^^^^^^

lib/js/src/frontend/app.js:8: ERROR - Failed to load module "react-dom"
var ReactDom = require("react-dom");
           ^^^^^^^^^^^^^^^^^^^^

如何确保Google Closure Compiler查看node_modules以查找相关的第三方模块?

1 个答案:

答案 0 :(得分:4)

Closure-Compiler的最新版本支持节点模块。

编译器不会发现源文件 - 您必须将每个模块的源传递给编译器。此外,您还需要使用package.json将包中的任何--js node_modules/react/package.json文件传递给编译器。

如果您在整个项目中使用模块,您可能希望使用dependency management flags,以便编译器自动为您排序源文件。

根据上面的示例,您的编译命令可能如下所示:

java -jar closure-compiler.jar --process_common_js_modules
    --dependency_mode=STRICT
    --module_resolution=NODE
    --entry_point="lib/js/src/frontend/app"
    --js_output_file=static/out.js
    --js='node_modules/react/package.json'
    --js='node_modules/react/**/*.js'
    --js='node_modules/react-dom/package.json'
    --js='node_modules/react-dom/**/*.js'
    --js='lib/js/src/frontend/*.js'

在下一版本发布后不久,我们将提供完整的文档和一些利用这些功能的附加工具。