Codemod - чтение файла в узле, который использует синтаксис экспорта - PullRequest
2 голосов
/ 25 октября 2019

Работает над пакетом npm, который запускает кодовый модуль в любом данном исходном репозитории. Как часть моего codemod, я ищу заменить определенные значения в исходном хранилище. Прежде чем заменить эти значения, мне нужно проверить значения в объекте, экспортируемом из определенного файла (назовем его constants.js), чтобы эти значения существовали. Проверка выше, которую мне нужно выполнить с constants.js, является условной. Условно, если пользователь codemod хочет посмотреть файл constants.js. Файл constants.js использует оператор import..export для экспорта нужного мне объекта.

Есть какие-нибудь указатели на то, как я могу извлечь объект из этого файла? Я не могу использовать опцию babel здесь, поэтому я пытаюсь использовать методы fs, чтобы получить то, что я хочу. Я использовал метод createReadStream для чтения файла, но анализ его для извлечения экспорта по умолчанию кажется очень хрупким. Есть ли чистый способ, которым я могу получить то, что мне нужно?

В приведенном ниже примере я хочу иметь возможность извлечь Messages, чтобы я мог найти termsOfUse для своих изменений кодов.

Constants.js

const Messages = {
      termsOfUse: locale => (locale === 'en' ? `TERMS OF USE` : `CONDITIONS`),
};

export default Messages;

Заранее благодарим за помощь.

...