Получение импортированных путей из результата Babel.transform - PullRequest
1 голос
/ 08 ноября 2019

В специальном (no-Node) проекте, над которым я сейчас работаю, я использую Babel 6 для преобразования JS-файлов в es2015. Результат функции transform возвращает объект со свойством метаданных, в котором содержатся все импортированные данные, которые скомпилированный файл имеет в качестве зависимости. Я использую это, чтобы определить файлы для загрузки и порядок их загрузки.

К сожалению, в Babel 7 объект метаданных был удален из результата, и я не вижу нигде требуемого импорта. В примечаниях по миграции API я нахожу следующее утверждение:

Удалены babel.metadata, поскольку сгенерированные метаданные плагина всегда включаются в результат вывода.

Так что здесь подразумевается под "результатом вывода"? Где я могу найти зависимости сейчас? Или я должен сам генерировать их с помощью плагина? Если так, я был бы признателен за указатель, как это сделать. Заранее спасибо за помощь!

1 Ответ

1 голос
/ 08 ноября 2019

И Babel 6, и Babel 7 имеют возможность для плагинов добавлять метаданные к объекту, представленному в API плагинов как file.metadata, и получать метаданные, доступные в результате, возвращаемому из babel.transform*() API. Это не изменилось.

Удалены babel.metadata, поскольку сгенерированные метаданные плагина всегда включаются в выходной результат.

указывает на то, что в Babel 6 есть опциячтобы ты мог передать Вавилону. Если вы передали metadata: false, метаданные, собранные плагинами, не будут включены в результат, возвращаемый из babel.transform*(). Опция была удалена, чтобы сделать результаты более согласованными, и поскольку не было очевидной причины разрешать удаление метаданных.

Babel 7 сделал удаление логики Babel для автоматического заполнения метаданных информациейоб импорте и экспорте, потому что это не было документировано, не реализовано последовательно и не было поведением, которое принадлежало ядру Бабеля. Если это те данные, которые вам нужны, вам нужно написать и включить собственный плагин для сбора этих данных и установить какое-то поле на file.metadata, чтобы вы могли получить к нему доступ вместе с результатом преобразования.

...