Parcel распространяется через npm и устанавливается как зависимость проекта. Чаще всего используется локальная установка, поскольку она обеспечивает воспроизводимость сборки и одинаковую версию инструмента для всех участников разработки.
Установка через npm:
npm install --save-dev parcel
Установка через Yarn:
yarn add --dev parcel
Установка через pnpm:
pnpm add -D parcel
После установки исполняемый файл Parcel становится доступен внутри
каталога node_modules/.bin.
Структура минимального проекта:
project/
├── src/
│ ├── index.html
│ ├── index.js
│ └── styles.css
├── package.json
└── node_modules/
Пример содержимого файла package.json:
{
"name": "parcel-project",
"version": "1.0.0"
}
Parcel работает по принципу «zero configuration» — большинство проектов запускаются без дополнительной настройки.
Файл src/index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Parcel App</title>
<link rel="stylesheet" href="./styles.css">
</head>
<body>
<h1>Parcel</h1>
<script type="module" src="./index.js"></script>
</body>
</html>
Файл src/index.js:
console.log('Parcel работает');
Запуск сервера разработки:
npx parcel src/index.html
После запуска Parcel:
Обычно приложение становится доступно по адресу:
http://localhost:1234
Для удобства работы команды запуска и сборки выносятся в секцию
scripts.
{
"scripts": {
"dev": "parcel src/index.html",
"build": "parcel build src/index.html"
}
}
Теперь доступны команды:
npm run dev
и
npm run build
Режим разработки предназначен для быстрого создания и тестирования приложения.
Команда:
parcel src/index.html
или
npm run dev
Особенности режима разработки:
При изменении любого файла Parcel пересобирает только необходимые части проекта.
Для создания оптимизированной версии используется команда:
parcel build src/index.html
Или через скрипт:
npm run build
Во время production-сборки Parcel автоматически:
Пример результата:
dist/
├── index.html
├── index.8a7d4f.js
└── index.2b1e91.css
По умолчанию результат сборки сохраняется в каталог
dist.
Изменение каталога осуществляется через параметр:
parcel build src/index.html --dist-dir build
Результат:
build/
├── index.html
├── index.js
└── index.css
Для режима разработки:
parcel src/index.html --dist-dir build
По умолчанию используется порт 1234.
Изменение порта:
parcel src/index.html --port 3000
После запуска приложение будет доступно по адресу:
http://localhost:3000
Настройка через скрипт:
{
"scripts": {
"dev": "parcel src/index.html --port 3000"
}
}
Parcel способен автоматически открывать браузер после запуска сервера.
parcel src/index.html --open
Также можно указать конкретный браузер:
parcel src/index.html --open chrome
Parcel поддерживает различные типы входных файлов.
HTML:
parcel src/index.html
Jav * aScript:
parcel src/index.js
TypeScript:
parcel src/index.ts
React:
parcel src/index.jsx
Несколько точек входа:
parcel src/*.html
Пример:
src/
├── index.html
├── admin.html
└── profile.html
Команда:
parcel src/*.html
Parcel создаст отдельные сборки для каждой страницы.
Большая часть конфигурации может храниться внутри файла
package.json.
Пример:
{
"name": "app",
"version": "1.0.0",
"source": "src/index.html"
}
Поле source определяет главный входной файл проекта.
Для сборки достаточно выполнить:
parcel build
Parcel предоставляет расширяемую систему конфигурации через файл
.parcelrc.
Пример:
{
"extends": "@parcel/config-default"
}
Этот файл позволяет:
Типичная структура:
project/
├── .parcelrc
├── package.json
└── src/
Алиасы упрощают импорт модулей.
Пример структуры:
src/
├── components/
│ └── Button.js
└── index.js
Настройка в package.json:
{
"alias": {
"@components": "./src/components"
}
}
Использование:
import Button from '@components/Button';
Преимущества:
Parcel автоматически работает с файлами окружения.
Файл:
.env
Содержимое:
API_URL=https://api.example.com
APP_NAME=Parcel Application
Использование:
console.log(process.env.API_URL);
console.log(process.env.APP_NAME);
Дополнительные файлы окружения:
.env
.env.local
.env.development
.env.production
Это позволяет использовать разные настройки для различных сред выполнения.
Parcel использует Browserslist для определения поддерживаемых браузеров.
Настройка в package.json:
{
"browserslist": [
"> 0.5%",
"last 2 versions",
"not dead"
]
}
Либо через отдельный файл:
.browserslistrc
Содержимое:
> 0.5%
last 2 versions
not dead
На основе этих настроек Parcel автоматически:
Targets позволяют создавать различные варианты выходных файлов.
Пример:
{
"targets": {
"modern": {
"distDir": "dist/modern"
},
"legacy": {
"distDir": "dist/legacy"
}
}
}
Сборка:
parcel build
Результат:
dist/
├── modern/
└── legacy/
Подобный подход используется для создания отдельных сборок под современные и устаревшие браузеры.
Source maps связывают скомпилированный код с исходниками.
По умолчанию в режиме разработки они включены автоматически.
Отключение:
parcel build src/index.html --no-source-maps
Явное включение:
parcel build src/index.html --source-maps
Преимущества source maps:
При размещении приложения не в корне сайта необходимо настроить базовый путь.
Пример:
parcel build src/index.html --public-url /app/
Результат:
<script src="/app/index.js"></script>
Это особенно важно при публикации приложения:
Parcel активно использует кэш для ускорения сборки.
Каталог кэша:
.parcel-cache/
Структура проекта:
project/
├── .parcel-cache/
├── dist/
├── src/
└── package.json
Очистка кэша:
rm -rf .parcel-cache
Либо запуск без кэша:
parcel src/index.html --no-cache
Использование кэша существенно сокращает время повторных сборок крупных проектов.
Для диагностики процесса сборки используется подробный вывод.
parcel build src/index.html --log-level verbose
Доступные уровни:
none
error
warn
info
verbose
Подробное логирование помогает:
Для локальной разработки HTTPS поддерживается встроенными средствами Parcel.
Запуск:
parcel src/index.html --https
После запуска приложение будет доступно через:
https://localhost:1234
Использование HTTPS необходимо для тестирования возможностей браузера, требующих защищённого соединения:
Parcel автоматически исключает из обработки файлы, которые не участвуют в графе зависимостей.
Дополнительно рекомендуется использовать файл:
.gitignore
Пример:
node_modules
dist
.parcel-cache
Это предотвращает попадание временных и сгенерированных файлов в систему контроля версий.
Структура современного проекта на Parcel:
project/
├── .env
├── .gitignore
├── package.json
├── .parcelrc
├── .browserslistrc
├── src/
│ ├── index.html
│ ├── index.js
│ ├── styles.css
│ ├── assets/
│ └── components/
├── dist/
└── .parcel-cache/
Пример итогового package.json:
{
"name": "parcel-app",
"version": "1.0.0",
"source": "src/index.html",
"scripts": {
"dev": "parcel",
"build": "parcel build"
},
"alias": {
"@components": "./src/components"
},
"browserslist": [
">0.5%",
"last 2 versions",
"not dead"
]
}
Такая конфигурация обеспечивает быстрый запуск проекта, поддержку современных инструментов разработки, автоматическую оптимизацию ресурсов и удобную организацию процесса сборки без необходимости создавать объёмные конфигурационные файлы.