Я пытаюсь скомпилировать весь исходный код на моем веб-сайте, загружаемый при запуске в один файл. Некоторый код загружается с использованием $.getScript
, поэтому мне нужно уметь оставлять доступ к jQuery и нескольким другим функциям. Ниже я это сделал. Что я делаю не так?Как использовать компилятор закрытия google для сжатия кода из внешнего скрипта
Я прочитал учебник Google по адресу: https://developers.google.com/closure/compiler/docs/api-tutorial3 Чтобы проверить это, я попытался сжатия JQuery 3.1.0 удалить все, но show
и hide
поэтому я приложил следующее к концу.
window['jQuery'] = window['$'] = jQuery;
jQuery.prototype['hide'] = jQuery.prototype.hide;
jQuery.prototype['show'] = jQuery.prototype.show;
Я скомпилирован с помощью
java -jar compiler.jar --js_output_file all.js --compilation_level ADVANCED --create_source_map all.map --js _common/jquery/js/jquery-3.1.0.js
и добавил //# sourceMappingURL=/all.map
к концу outputed файла.
Для тестирования я создал простую веб-страницу
<html>
<head>
<script src="/all.js"></script>
</head>
<body>
<div id="a1" onclick="$.hide('#a1');">a1</div>
<div id="a2" onclick="$.hide('#a2');">a2</div>
<div id="a3" onclick="$.hide('#a3');">a3</div>
<div id="a4" onclick="$.hide('#a4');">a4</div>
</body>
</html>
Когда я запускаю это я получаю следующие ошибки в консоли.
jquery-3.1.0.js:7441 Uncaught TypeError: Cannot read property 'source' of undefined
jquery-3.1.0.js:3853 Uncaught TypeError: Za.ga is not a function
test.html:8 Uncaught ReferenceError: $ is not definedonclick @ test.html:6
Я делаю что-то неправильно или это за пределами возможностей компилятора закрытия Google. Я не возражаю против использования другого minifier, если я могу запустить его с php, используя shell_exec
Насколько я знаю, jQuery не является внутренне аннотированным для компилятора замыкания, поэтому это будет не просто так просто. Почему бы просто не заменить немного jQuery, что вам нужно? –
Это всего лишь пример. Я хочу добавить несколько своих собственных сценариев. Компилятор работает до тех пор, пока я использую базовое сжатие, но было бы неплохо получить расширенную работу –
для самого jQuery. Хотелось бы, чтобы я знал, как экспортировать все. Это мой собственный код, который я хочу ограничить несколькими функциями. –