2

オプティマイザーとしてクロージャーコンパイラーを備えた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 を実行している場合にのみ使用できると記載されています。Java ではなく JavaScript である Node で requirejs を実行しています。

この問題は、次の 2 つの別々の手順で回避できます。

  1. RequireJs タスクを実行し、一時ファイルに出力します
  2. 一時ファイルを最終ファイルにクロージャ コンパイルする別のタスクを実行します。

自分のマシンで Closure Java バイナリを実行したい場合は、この Grunt パッケージを使用できます。または、 Closure REST API を使用する私の Grunt Closure スクリプトを使用することもできます。このスクリプトでは、システムに Java や Closure バイナリをインストールする必要はありません。

于 2014-06-06T14:28:47.197 に答える