我正在尝试谷歌闭包编译器作为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以查找相关的第三方模块?
答案 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'
在下一版本发布后不久,我们将提供完整的文档和一些利用这些功能的附加工具。