Зачем конвертировать MJS в JSON?
Иногда конфигурация или фикстура находится в модуле .mjs, и она нужна вам в виде статического файла .json, который другие инструменты могут читать без запуска JavaScript; в этом случае вы выполняете модуль и сериализуете его экспортируемое значение.
Способы конвертации MJS в JSON
Команда Node.js в одну строку FREE
Импортируйте модуль и выведите JSON: node --input-type=module -e "import('./file.mjs').then(m=>console.log(JSON.stringify(m.default,null,2)))" > file.json.
Небольшой скрипт Node FREE
Напишите короткий .mjs, который делает import data from './file.mjs', затем fs.writeFileSync('file.json', JSON.stringify(data, null, 2)) и запустите его с помощью node.
Visual Studio Code FREE
Если .mjs уже экспортирует простой объектный литерал, скопируйте этот объект в новый файл .json и удалите ключевое слово export, заключив все ключи в кавычки.
Об этих форматах
Файл .mjs - это исходный код JavaScript, который Node.js обрабатывает как модуль ECMAScript. Это означает, что в нем используются import и export вместо require в CommonJS. Расширение…
Открыть детали .MJS →Файл JSON - это текстовый файл данных в формате JavaScript Object Notation, используемый веб-API, конфигурациями приложений и для экспорта данных. Его открывает любой текстовый редактор -…
Открыть детали .JSON →Качество и на что обратить внимание
- Сохраняются только сериализуемые данные: функции, классы,
undefined,BigInt, символы и комментарии отбрасываются или вызывают ошибку во времяJSON.stringify. - Запуск модуля выполняет его код, поэтому любые побочные эффекты (сетевые вызовы, запись файлов) произойдут во время конвертации.
- Если модуль формирует свой экспорт динамически во время выполнения, JSON будет лишь снимком одного конкретного запуска.
Часто задаваемые вопросы
Почему я не могу конвертировать `.mjs` напрямую в `.json`?
.mjs - это исполняемый код, который может содержать логику, импорты и функции, в то время как JSON содержит только статические значения. Конвертировать нечего, пока вы не запустите код.Как получить JSON из `.mjs`?
JSON.stringify. Запишите результат в файл .json.Что теряется при этом?
undefined, BigInt, символы и комментарии. Остаются только чистые данные.