Запуск компилятора Google Closure с grunt

Я пытаюсь создать задачу grunt для создания проекта javascript, используя в качестве оптимизатора requirejs с компилятором закрытия. Я использую плагин 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] }

Закрытие написано на java, а мой проект на nodejs, и я не уверен, как правильно его настроить.


person EternallyCurious    schedule 28.05.2014    source источник


Ответы (1)


В документации указано, что Closure как оптимизатор может быть используется при запуске requirejs в Java. Вы используете requirejs в узле, который является JavaScript, а не Java.

Вы можете обойти эту проблему, выполнив ее в два отдельных шага:

  1. Запустить задачу RequireJs, вывести во временный файл
  2. Запустите другую задачу, которая Closure-компилирует временный файл в окончательный файл.

Вы можете использовать этот пакет Grunt, если хотите запустить исполняемый файл Closure Java на своем собственная машина. В качестве альтернативы вы можете использовать мой скрипт Grunt Closure, использующий Closure REST API, который не Не требует установки Java или двоичного файла Closure в вашей системе.

person Blaise    schedule 06.06.2014