Предотвратить добавление deps.js по умолчанию

Я пытаюсь использовать библиотеку закрытия Google для javascript моего веб-приложения. У меня есть JS-скрипт в каталоге static вместе с библиотекой закрытия:

static/
  app.js
  closure-library

Код JS объединяется в один скрипт с помощью построителя замыканий:

static/closure-library/closure/bin/build/closurebuilder.py \
> --root=./static/closure-library/ \
> --namespace="pr" \
> --output_mode=script \
> --output_file=./static/app-calc.js static/app.js 

Бэкэнд на Go. Сгенерированный выше сценарий включается в HTML как:

<script src="/static/app-calc.js"></script>

Однако, как только страница загружается, deps.js добавляется в DOM после приведенного выше тега script:

<script type="text/javascript" src="deps.js"></script>

Поскольку этот файл добавляется без предшествующего пути, откройте его, чтобы загрузить этот скрипт с использованием текущего URL-адреса приложения.

Есть ли способ изменить это поведение или предотвратить добавление deps.js? Насколько я могу судить, поскольку вся библиотека объединена в один файл, необходимости в этом файле быть не должно. Закрытие документов о том, что путь depswriter указан таким же, как base.js, но поскольку base.js не является даже включено, я не понимаю, как это может повлиять на приложение.


person abhink    schedule 20.04.2017    source источник


Ответы (2)


Closurebuilder устарел, и вместо этого вы должны использовать компилятор закрытия. См. раздел Как использовать компилятор Google Closure, который отвечает на многие ваши вопросы. Вики-страница об управлении зависимостями содержит текущие подробности. Обратите внимание, что по-прежнему существует много старой документации о компиляторе закрытия, которая не была обновлена, например, https://developers.google.com/closure/library/docs/closurebuilder. Некоторые из этих страниц все еще актуальны, но другие устарели. Вики на github обновлена.

Файл deps.js сейчас нужен только для отладки при запуске напрямую из исходного кода (без компиляции). См. https://github.com/google/closure-compiler/wiki/Debugging-Uncompiled-Source-Code.

Компилятор сможет взять только те фрагменты библиотеки закрытия, которые вы используете, и объединить их с вашим кодом.

person owler    schedule 21.04.2017
comment
Я попытался использовать компилятор с флагом --dependency_mode. deps.js все еще появляется. - person abhink; 24.04.2017
comment
Можете ли вы показать полную команду компиляции, которую вы используете? Что вы имеете в виду, что deps.js все еще отображается? Насколько я могу судить, единственный способ сгенерировать deps.js — это скрипты Python, такие как depswriter.py или closurebuilder.py — вы все еще используете их? Также вы можете показать больше структуры каталогов: где находятся исходные файлы, куда помещается скомпилированный вывод? - person owler; 24.04.2017

Установите глобальную переменную или свойство глобального объекта "CLOSURE_NO_DEPS" в значение true. Это предотвратит попытку base.js загрузить файл deps.js.

Подробности можно найти в коде: https://github.com/google/closure-library/blob/master/closure/goog/base.js#L19

person John    schedule 24.04.2017