谷歌关闭编译器进程node_modules

Sen*_*eca 5 google-closure-compiler

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

java -jar closure-compiler.jar --process_common_js_modules --js_output_file=static/out.js 'lib/js/src/frontend/*.js'"
Run Code Online (Sandbox Code Playgroud)

问题是其中一个文件需要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");
           ^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

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

Cha*_*rth 4

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

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

如果您在整个项目中使用模块,您可能希望使用依赖项管理标志,以便编译器自动为您对源文件进行排序。

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

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'
Run Code Online (Sandbox Code Playgroud)

完整的文档和一些使用这些功能的附加工具将在下一个版本后不久提供。