2

我正在尝试创建一个 grunt 任务来使用 requirejs 和闭包编译器作为优化器来构建一个 javascript 项目。我正在使用 grunt-contrib-requirejs 插件。

https://www.npmjs.org/package/grunt-contrib-requirejs

虽然我没有明确设置闭包编译器,但这里是配置和错误:

配置:

requirejs:
      compile:
        options:
          sourceMap: true
          baseUrl: "client"
          mainConfigFile: "main.js"
          name: "main.js"
          out: "build/main.js"
          optimize: "closure"
          #generateSourceMaps: true
          closure:
            CompilerOptions: {},
            CompilationLevel: 'SIMPLE_OPTIMIZATIONS'
            loggingLevel: 'WARNING'

错误:

C:\Users\Project>grunt requirejs
Running "requirejs:compile" (requirejs) task
{ [Error: Error: optimizer with name of "closure" not found for this environment

    at Object.optimize.js (C:\Users\Project\node_modules\requirejs\bin\r.js:24771:27)
]
  originalError: [Error: optimizer with name of "closure" not found for this env
ironment] }

Closure 是用 java 编写的,我的项目是用 nodejs 编写的,我不确定如何正确设置它。

4

1 回答 1

4

文档指出 Closure 作为优化器只能在 Java 中运行 requirejs 时使用。您在 Node 中运行 requirejs,它是 JavaScript,而不是 Java。

您可以通过两个单独的步骤来解决此问题:

  1. 运行RequireJs任务,输出到一个临时文件
  2. 运行另一个任务,关闭将临时文件编译为最终文件

如果你想在你自己的机器上运行 Closure Java 二进制文件,你可以使用这个 Grunt 包。或者,您可以使用我的使用 Closure REST API 的 Grunt Closure 脚本,它不需要在您的系统上安装 Java 或 Closure 二进制文件。

于 2014-06-06T14:28:47.197 回答