Как использовать 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.
Ответ 5
Используйте компилятор закрытия с PHP (размещенный через CURL или локальный через инструмент командной строки)
http://bohuco.net/blog/2009/11/google-closure-compiler-with-php/
Ответ 6
Если вам нужно скомпилировать несколько файлов js или вы хотите упростить процесс компиляции, вы можете использовать kjscompiler: https://github.com/knyga/kjscompiler (на основе на компиляторе google закрытия)