Как использовать Google Closure для компиляции JavaScript

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

На сайте продукта говорится: "Компилятор Closure также интегрирован со скоростью страницы".

Как использовать скорость страницы для компиляции моих веб-страниц JavaScript с закрытием?

(Или есть веб-сайт, который я могу просто вставить в свой JavaScript, чтобы закрыть его?

Ответы

Ответ 1

Для одного файла это просто

java -jar $path_to_jar/compiler.jar --js input_file.js \
          --js_output_file output_file.js

Для проекта с несколькими файлами вы можете использовать calcdeps.py в сочетании с compiler.jar

#!/bin/sh$
$CALCDEPS_PATH=/path/to_calcdeps  #directory containing calcdeps.py
$JAR_PATH=/path/to_jar            #directory containing compiler.jar
$CLOSURE_PATH=/path/to_closure    #contains directory "closure"
$CALCDEPS_PATH/calcdeps.py --path $CLOSURE_PATH \
                           --path . \
                           --compiler_jar $JAR_PATH/compiler.jar \
                           --input main_project_file.js \
                           --output_mode compiled \
                           > compiled_project_file.js

Таким образом, компилятор дает значимую информацию о ошибках типа и т.д. Ошибки типа могут быть обнаружены во время компиляции, потому что compiler.jar использует определенные JSDoc комментарии для информации типа.

Дополнительные флаги компилятора могут быть переданы в calcdeps.py вместе с параметрами -f или --compiler_flags

Если вы хотите использовать расширенные настройки оптимизации

--compiler_flags "--compilation_level=ADVANCED_OPTIMIZATIONS"

обратите внимание на двойные кавычки и знак равенства - пришлось использовать этот формат в bash

Ответ 2

Компилятор Closure теперь доступен как приложение JavaScript. Нет необходимости в зависимости от Java.

Есть несколько способов интеграции с ним. Я сделал это как часть Rollup

Пример:

import rollup from 'rollup';
import closure from 'rollup-plugin-closure-compiler-js';

export default {
  entry: 'index.js',
  dest: 'dist/build.js',
  format: 'iife',
  plugins: [
    closure({
      languageIn: 'ECMASCRIPT6',
      languageOut: 'ECMASCRIPT5',
      compilationLevel: 'ADVANCED',
      warningLevel: 'VERBOSE',
      externs: [{src:`
                      var jQuery;
                      jQuery.fadeIn = function() {};  

                      var ko;  
                      ko.applyBindings = function(vm) {};
                      ko.computed = function(a,b) {};
                      ko.observable = function(a) {};
               `}],
    })
  ]
}

Подробнее здесь:

http://www.syntaxsuccess.com/viewarticle/using-the-closure-compiler---advanced_optimizations

Ответ 3

"Page Speed ​​1.4 Beta объединяет компилятор Closure для миниатюризации файлов JavaScript автоматически. Однако вам потребуется загрузить и установить Компилятор Бета-версии и закрытия страницы отдельно."

http://code.google.com/speed/page-speed/download.html

Я еще не установил эту версию, но я вполне уверен, что в этой рекомендации по скорости страницы будет представлен компилированный код.

Ответ 4

Кажется, что Closure Compiler интегрирован со скоростью страницы только для Windows.

Ответ 6

Если вам нужно скомпилировать несколько файлов js или вы хотите упростить процесс компиляции, вы можете использовать kjscompiler: https://github.com/knyga/kjscompiler (на основе на компиляторе google закрытия)