В экосистеме Parcel поле targets играет центральную роль
в определении того, как исходный код будет собираться под разные среды
выполнения. Оно позволяет декларативно описывать выходные форматы,
окружения и параметры сборки без необходимости вручную настраивать
отдельные конфигурации.
Parcel рассматривает проект как набор целей (targets), каждая из которых описывает конечный результат компиляции: браузерное приложение, Node.js-библиотеку, сервисный бандл или набор статических файлов.
targetsПоле targets размещается в package.json и
представляет собой объект, где ключ — это имя цели, а значение —
конфигурация сборки.
{
"targets": {
"default": {
"context": "browser",
"distDir": "dist",
"sourceMap": true
}
}
}
Каждый target определяет набор правил трансформации кода и вывода артефактов. Parcel использует эти настройки для построения графа зависимостей и выбора подходящих трансформеров.
default
targetdefault — это стандартная цель сборки, используемая,
если не указано иное.
Особенности:
{
"targets": {
"default": {
"context": "browser"
}
}
}
contextcontext определяет среду выполнения, для которой
собирается код.
Основные значения:
browser — сборка для веб-приложенийnode — сборка для Node.jsweb-worker — для Web Workerselectron-renderer — для Electron renderer процессаelectron-main — для Electron main процесса{
"targets": {
"server": {
"context": "node"
}
}
}
В зависимости от контекста Parcel:
distDirdistDir определяет директорию, куда будут помещены
результаты сборки.
{
"targets": {
"default": {
"distDir": "build"
}
}
}
Особенности:
При наличии нескольких targets каждый может иметь собственную директорию, что позволяет разделять клиентскую и серверную сборки.
sourceMapsourceMap управляет генерацией карт исходного кода.
Возможные значения:
true — включить source mapsfalse — отключить"inline" — встроенные карты"hidden" — карты генерируются, но не подключаются к
output{
"targets": {
"default": {
"sourceMap": true
}
}
}
Source maps используются для:
enginesengines задаёт требования к среде выполнения, включая
версии браузеров или Node.js.
{
"targets": {
"default": {
"engines": {
"browsers": "> 0.5%, last 2 versions",
"node": ">=16"
}
}
}
}
Parcel использует эту информацию для:
outputFormatoutputFormat определяет формат выходного бандла.
Основные варианты:
global — UMD-подобный форматesmodule — ES Modulescommonjs — CommonJScommonjs-esmodule — гибридный формат{
"targets": {
"library": {
"outputFormat": "esmodule"
}
}
}
Выбор формата влияет на:
isLibraryФлаг isLibrary указывает, что результат сборки является
библиотекой, а не приложением.
{
"targets": {
"default": {
"isLibrary": true
}
}
}
При включении:
includeNodeModulesincludeNodeModules управляет тем, будут ли зависимости
из node_modules включены в бандл.
{
"targets": {
"default": {
"includeNodeModules": false
}
}
}
Варианты поведения:
true — включать все зависимостиfalse — исключать зависимости (external)Используется особенно часто в библиотечных сборках.
Parcel поддерживает одновременное определение нескольких целей сборки, что позволяет генерировать разные артефакты из одного исходного кода.
{
"targets": {
"app": {
"context": "browser",
"distDir": "dist/app"
},
"server": {
"context": "node",
"distDir": "dist/server"
}
}
}
Такой подход применяется в архитектурах:
Parcel использует модель частичного наследования:
default{
"targets": {
"default": {
"context": "browser",
"sourceMap": true
},
"legacy": {
"engines": {
"browsers": "> 1%"
}
}
}
}
Targets могут быть связаны с конкретными входными файлами через
package.json или CLI-конфигурацию Parcel.
Parcel сопоставляет:
Это позволяет строить сложные схемы сборки, где каждый entry имеет собственный pipeline трансформации.
targetsЕсли поле targets не задано, Parcel использует
автоматические значения:
context: browserdistDirОднако такой режим ограничивает контроль над сборкой и не позволяет точно управлять выходными артефактами.
Часто встречающиеся проблемы:
context реальной среде выполненияoutputFormat и isLibrarydistDir для разных targetsengines, приводящее к избыточной
транспиляцииТакие ошибки влияют на размер бандла, совместимость и поведение runtime.
targets в архитектуре сборки ParcelМеханизм targets формирует абстракцию уровня сборки, отделяя:
Это позволяет Parcel работать как универсальная система сборки, адаптирующая один проект под различные среды без дублирования конфигурации.