Parcel рассматривает любые подключаемые файлы как часть единого графа зависимостей, где JSON, YAML и TOML превращаются в полноценные модули наравне с JavaScript. Это позволяет использовать конфигурационные форматы напрямую в коде без ручного парсинга и промежуточных преобразований. Такой подход снижает количество шаблонного кода и делает структуру проекта более декларативной.
Внутри сборщика каждый импортируемый файл проходит через цепочку трансформаций и превращается в asset — абстракцию модуля с нормализованным интерфейсом. Независимо от исходного формата (JS, JSON, YAML, TOML), итогом становится модуль, который:
importЭто делает работу с конфигурационными форматами частью стандартного JavaScript-пайплайна.
JSON является встроенной поддержкой Parcel и не требует
дополнительной настройки. Любой .json файл автоматически
интерпретируется как модуль.
{
"appName": "DemoApp",
"version": "1.0.0",
"debug": true
}
Импорт выполняется напрямую:
import config from './config.json';
console.log(config.appName);
Parcel применяет к JSON следующие правила:
default exportJSON становится частью ESM-графа, несмотря на отсутствие собственных экспортов.
YAML не входит в базовую поставку Parcel, но поддерживается через
трансформер @parcel/transformer-yaml. После установки и
настройки YAML-файлы становятся импортируемыми модулями.
Установка:
npm install @parcel/transformer-yaml
Пример YAML-файла:
app:
name: DemoApp
features:
auth: true
payments: false
Импорт:
import config from './config.yaml';
console.log(config.app.name);
При обработке Parcel:
export defaultВажная особенность — YAML поддерживает сложные структуры (ссылки, anchors), которые преобразуются в обычные JS-объекты до этапа сборки.
TOML также подключается через отдельный трансформер
@parcel/transformer-toml.
Установка:
npm install @parcel/transformer-toml
Пример TOML-файла:
title = "DemoApp"
[server]
host = "localhost"
port = 8080
Импорт в Jav * aScript:
import config from './config.toml';
console.log(config.server.port);
Parcel обрабатывает TOML следующим образом:
[section] в вложенные объектыTOML особенно полезен для конфигураций серверных приложений и инструментов сборки, где требуется строгая типизация структуры.
Parcel позволяет одновременно использовать JSON, YAML и TOML в рамках одного проекта без дополнительных адаптеров.
import jsonConfig from './config.json';
import yamlConfig from './config.yaml';
import tomlConfig from './config.toml';
export const config = {
...jsonConfig,
...yamlConfig.app,
server: tomlConfig.server
};
Все три формата:
Одно из ключевых свойств Parcel — агрессивное кэширование на уровне контента. Для JSON/YAML/TOML это особенно эффективно, так как:
В результате конфигурационные файлы практически не влияют на время полной пересборки проекта.
При использовании TypeScript JSON автоматически поддерживает
типизацию через resolveJsonModule. Для YAML и TOML типы
обычно описываются вручную или генерируются:
declare module "*.yaml" {
const value: any;
export default value;
}
declare module "*.toml" {
const value: any;
export default value;
}
Parcel не навязывает схему типов, но гарантирует консистентное преобразование в runtime-объект.
При некорректной структуре файлов Parcel:
Типичные ошибки:
Диагностика выполняется до этапа бандлинга, что упрощает отладку конфигураций.
Parcel оптимизирует работу с JSON/YAML/TOML за счёт:
Даже при большом количестве конфигурационных файлов влияние на сборку остаётся минимальным.
Конфигурационные форматы в Parcel часто используются как источник runtime-данных:
import routes from './routes.yaml';
routes.forEach(route => {
console.log(route.path);
});
или:
import settings from './app.toml';
if (settings.debug) {
console.log('Debug mode enabled');
}
Такой подход устраняет необходимость ручного чтения файлов через
fs и парсинга в runtime.
В реальных проектах часто применяется комбинирование форматов:
Parcel объединяет их в один механизм импорта, сохраняя единообразие интерфейса и поведения модулей во всём проекте.