Закрытие зависимостей компилятора с модулями ES6 - PullRequest
1 голос
/ 12 февраля 2020

До сегодняшнего дня у меня был проект со следующей структурой

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 после запуска компилятора закрытия?

...