До сегодняшнего дня у меня был проект со следующей структурой
js/liba.js
js/libb.js
js/libc.js
other/cat.js
other/dog.js
other/puppy.js
Он был скомпилирован в один go с использованием ADVANCED
и разделен на файлы.
js/lib.js (root)
other/cat.js
other/dog.js
other/puppy.js
В аргументах компилятора cat.js
и dog.js
зависят от lib.js
.
И puppy.js
зависят от dog.js
Представляем модули ES
Чтобы помочь с порядком компилятора, я начал использовать модули ES6. До этого порядок определялся порядком аргументов для закрытия компилятора.
Теперь lib.js
включает весь код из dog.js
. Новый dog.js
пуст.
Это проблема, потому что dog.js
содержит код, который запускается при запуске и должен запускаться только на страницах, ссылающихся на dog.js
и puppy.js
, но не на страницах, ссылающихся на cat.js
.
Используя --output_manifest
, я мог убедиться, что dog.js
действительно указан среди liba.js
, libb.js
и libc.js
Когда я удаляю dog.js
и puppy.js
из аргументов компилятора я получаю ожидаемый результат в lib.js
и cat.js
. Нет ошибок компиляции с отсутствующими зависимостями.
Экспорт
Файл dog.js
содержит export
операторов, которые используются в puppy.js
.
Я предполагаю, что файлы с export
объединяются в файл root (lib.js
).
Как компилятор закрытия решает связать содержимое файла в узел root, а не исходный файл?
Можно ли использовать модули ES6 для совместного использования кода между отдельными файлами без связывания кода в root после запуска компилятора закрытия?