Современная сверхбыстрая сборка для верстки сайтов на базе Vite с поддержкой директив включения файлов (@@include), как в Gulp, но в 10-100x раз быстрее! Забудьте о длительной компиляции - получите мгновенный результат.
- Молниеносная скорость разработки, моментальный Hot Reload
- Поддержка @@include - работайте с компонентами без фреймворков
- Алиасы для путей (@scss, @js, @img) - никакой путаницы с ../../../../
- Автоматическая оптимизация изображений, CSS и JS
- Адаптивная система REM - верстайте без медиа-запросов под любые разрешения
- Многопоточная обработка ресурсов - быстрая сборка даже для больших проектов
- Никакого Webpack или Gulp - только современный и быстрый Vite
- Понятная структура проекта для удобной верстки
- Поддержка многостраничных сайтов из коробки
- Верстальщикам, которые хотят ускорить свой рабочий процесс
- Frontend-разработчикам, которые работают с многостраничными сайтами
- Web-студиям, которым нужна надежная сборка для верстки
- Всем, кто устал от медленной работы Gulp и сложности Webpack
app/
- исходные файлы проектаhtml/
- HTML компоненты для включенияscss/
- SCSS стилиjs/
- JavaScript файлыimg/
- изображенияfonts/
- шрифтыvendor/
- сторонние библиотекиfiles/
- файлы для скачивания (документы, архивы и т.д.)
dist/
- собранный проектpublic/
- статические файлы, которые копируются в сборку без изменений
В проекте реализованы следующие функции:
- ⚡ Обработка директив @@include в HTML файлах
- 🔄 Преобразование путей к ресурсам (@scss, @js, @img, @files и др.)
- 📦 Автоматическое копирование изображений, файлов и vendor-файлов в dist
- 🌐 Вендорные префиксы через Autoprefixer
- 📱 Сортировка и объединение медиа-запросов
- 🚄 Параллельная обработка ресурсов для оптимальной скорости сборки
- 🔥 Горячая перезагрузка при изменении HTML файлов
- 📂 В стандартной production-сборке (build):
- Удаление атрибутов crossorigin и type="module"
- Добавление атрибута defer для скриптов
- Замена подключений scss на css/app.css
- Фиксированные имена файлов (app.js и app.css) без хешей
- 🚀 В минифицированной production-сборке (build-min):
- Все преимущества стандартной сборки
- Минификация HTML, CSS и JavaScript
- Автоматическая оптимизация растровых изображений:
- JPEG/JPG: сжатие с сохранением 80% качества
- PNG: оптимизация с настройками качества 60-80%
- GIF: оптимизация с уровнем 7
- SVG: не оптимизируются (для сохранения их структуры и функциональности)
# Клонирование репозитория
git clone https://github.com/lexa-zxc/viteverst.git
# Установка зависимостей
npm install
# Запуск режима разработки
npm run dev
Для удобства в проекте предусмотрены BAT-файлы, которые позволяют запускать команды одним кликом:
dev.bat
- запуск режима разработкиbuild.bat
- сборка проекта без минификацииbuild-min.bat
- сборка проекта с минификациейpreview.bat
- предпросмотр собранного проектаfonts.bat
- конвертация TTF шрифтов в WOFF2
Также можно использовать короткие команды в консоли:
dev # эквивалентно npm run dev
build # эквивалентно npm run build
build-min # эквивалентно npm run build-min
preview # эквивалентно npm run preview
fonts # эквивалентно npm run fonts
В сборке реализована уникальная система адаптивной верстки на основе REM единиц, которая:
- Исключает необходимость в медиа-запросах для большинства случаев
- Автоматически масштабирует интерфейс под разные размеры экранов
- Точно настраивается для конкретных диапазонов разрешений
- Учитывает не только ширину, но и высоту экрана для естественного масштабирования
- Упрощает расчеты: базовое значение настроено так, что 1rem = 10px для удобства верстки
-
Интеллектуальное масштабирование: Скрипт
app/vendor/rem/rem.js
автоматически устанавливает размер шрифта для тега<html>
в зависимости от разрешения экрана:// Примеры коэффициентов масштабирования для разных устройств if (width > 2000) fontSize = 12 * koeff; // 2K+ разрешения if (width <= 1600) fontSize = 10.8 * koeff; // Большие ноутбуки if (width <= 1400) fontSize = 12.5 * koeff; // Маленькие ноутбуки // ...и т.д. для других размеров экранов
-
Удобный перевод из PX в REM: Система настроена так, что на стандартных разрешениях 1rem ≈ 10px, что делает расчеты предельно простыми:
/* Вместо этого */ .button { padding: 15px 20px; /* px */ font-size: 16px; margin-bottom: 20px; } /* Пишем так */ .button { padding: 1.5rem 2rem; /* 15px 20px */ font-size: 1.6rem; /* 16px */ margin-bottom: 2rem; /* 20px */ }
-
Проверка адаптивности: Просто растяните окно браузера или измените масштаб, чтобы увидеть, как все элементы интерфейса масштабируются пропорционально без единого медиа-запроса.
-
Точная настройка: Вы можете легко изменить коэффициенты масштабирования в файле
app/vendor/rem/rem.js
для разных диапазонов разрешений.
- Меньше кода: Нет необходимости писать десятки медиа-запросов для разных разрешений
- Естественное масштабирование: Все элементы масштабируются пропорционально и плавно
- Легкость поддержки: Изменения в одном файле влияют на всю адаптивность сайта
- Отзывчивость: Сайт выглядит хорошо даже на нестандартных разрешениях и при изменении масштаба
- Растяните окно браузера горизонтально и вертикально, чтобы увидеть, как все элементы масштабируются
- Измените масштаб страницы (Ctrl+/- или колесико мыши с Ctrl), чтобы проверить различные размеры экрана
- Проверьте на 2K+ мониторах или измените масштаб для симуляции таких разрешений
- Используйте инструменты разработчика для инспектирования стилей и проверки, что все элементы используют rem
Примечание: Для очень специфичных элементов и мобильных устройств все еще рекомендуется использовать точечные медиа-запросы, но основная адаптивность достигается без них.
# Режим разработки (также можно использовать dev.bat или просто команду dev)
npm run dev
# Сборка проекта без минификации (также build.bat или команда build)
npm run build
# Сборка проекта с минификацией и оптимизацией изображений (build-min.bat или команда build-min)
npm run build-min
# Предпросмотр собранного проекта (preview.bat или команда preview)
npm run preview
В HTML файлах можно использовать следующие директивы:
@@include('html/header.html')
@@include('html/header.html', {"title":"Главная страница"})
В файле header.html
можно использовать параметры через синтаксис @@имя_параметра
. Например:
<title>@@title</title>
Вы можете использовать специальные префиксы для указания путей к ресурсам:
<link rel="stylesheet" href="@scss/main.scss">
<script src="@js/app.js"></script>
<img src="@img/logo.png">
<script src="@vendor/jquery/jquery.min.js"></script>
<script type="module" src="@utils/helper.js"></script>
<a href="@files/documents/sample.pdf">Скачать документ</a>
Эти префиксы будут автоматически преобразованы в соответствующие пути при сборке.
В SCSS файлах также доступны алиасы для импорта:
// Импорт с алиасами
@import "@scss/variables";
@import "@scss/mixins";
.element {
background-image: url("@img/background.jpg");
}
В проекте реализована удобная функция конвертации шрифтов из формата TTF в более оптимизированный WOFF2, который обеспечивает лучшую производительность и меньший размер файлов.
Для конвертации шрифтов используйте одну из следующих команд:
# Через BAT-файл (Windows)
fonts.bat
# Или через npm скрипт
npm run fonts:convert
- Ищет TTF файлы в директории
app/fonts/
- Для каждого TTF файла создаёт соответствующий WOFF2 файл рядом с ним
- Если WOFF2 файл уже существует, он не будет создан повторно (чтобы перезаписать существующие файлы, используйте опцию
--force
)
При использовании команды npm run fonts:convert
можно указать дополнительные параметры:
# Указать другую директорию шрифтов
npm run fonts:convert -- --fonts-dir путь/к/шрифтам
# Принудительная конвертация (перезаписать существующие WOFF2 файлы)
npm run fonts:convert -- --force
- В 10-100 раз быстрее запуск сервера разработки
- Мгновенное применение изменений благодаря ESM
- Нативная поддержка SCSS, PostCSS из коробки
- Никаких длинных цепочек .pipe().pipe().pipe()...
- Меньше зависимостей, меньше проблем с устареванием плагинов
- Простая конфигурация и расширяемость
Надеемся, что эта сборка сделает вашу работу не только эффективнее, но и приятнее! Если у вас есть идеи по улучшению сборки или вы нашли ошибку - создайте issue или присылайте pull request.
- Node.js >= 16
- npm или yarn
vite
vite-config
vite-for-html
html-include
file-include
vite-file-include
верстка
сборка для верстки
frontend
html-components
scss
sass
web-dev
imagemin
multi-page
web-optimization
adaptive-rem
responsive
no-media-queries
fluid-layout
rem-based
auto-adaptive
ttf-to-woff2
font-converter
A modern ultra-fast setup for website development based on Vite with support for file inclusion directives (@@include), like in Gulp, but 10-100x times faster! Forget about long compilation times - get instant results.
- Lightning-fast development, instant Hot Reload
- @@include support - work with components without frameworks
- Path aliases (@scss, @js, @img) - no more confusion with ../../../../
- Automatic optimization of images, CSS, and JS
- Adaptive REM system - build responsive websites without media queries for any resolution
- Multi-threaded processing of resources - fast builds even for large projects
- No Webpack or Gulp - only modern and fast Vite
- Clear structure of the project for convenient development
- Support for multi-page sites out of the box
- HTML/CSS developers who want to speed up their workflow
- Frontend developers who work with multi-page sites
- Web studios that need a reliable setup for HTML/CSS development
- Anyone tired of Gulp's slow performance and Webpack's complexity
app/
- source fileshtml/
- HTML components for inclusionscss/
- SCSS stylesjs/
- JavaScript filesimg/
- imagesfonts/
- fontsvendor/
- third-party librariesfiles/
- downloadable files (documents, archives, etc.)
dist/
- compiled projectpublic/
- static files that are copied to the build without changes
The project implements the following features:
- ⚡ Processing @@include directives in HTML files
- 🔄 Resource path transformation (@scss, @js, @img, @files, etc.)
- 📦 Automatic copying of images, files, and vendor files to dist
- 🌐 Vendor prefixes via Autoprefixer
- 📱 Sorting and combining media queries
- 🚄 Parallel resource processing for optimal build speed
- 🔥 Hot reload when HTML files change
- 📂 In standard production build (build):
- Removal of crossorigin and type="module" attributes
- Adding defer attribute to scripts
- Replacing scss connections with css/app.css
- Fixed file names (app.js and app.css) without hashes
- 🚀 In minified production build (build-min):
- All the benefits of the standard build
- HTML, CSS, and JavaScript minification
- Automatic optimization of raster images:
- JPEG/JPG: compression with 80% quality preservation
- PNG: optimization with 60-80% quality settings
- GIF: optimization with level 7
- SVG: not optimized (to preserve their structure and functionality)
# Clone repository
git clone https://github.com/lexa-zxc/viteverst.git
# Install dependencies
npm install
# Start development mode
npm run dev
For convenience, the project includes BAT files that allow you to run commands with a single click:
dev.bat
- start development modebuild.bat
- build project without minificationbuild-min.bat
- build project with minificationpreview.bat
- preview the built projectfonts.bat
- convert TTF fonts to WOFF2
You can also use short commands in the console:
dev # equivalent to npm run dev
build # equivalent to npm run build
build-min # equivalent to npm run build-min
preview # equivalent to npm run preview
fonts # equivalent to npm run fonts
The build implements a unique adaptive layout system based on REM units, which:
- Eliminates the need for media queries in most cases
- Automatically scales the interface for different screen sizes
- Can be precisely configured for specific resolution ranges
- Takes into account not only width but also screen height for natural scaling
- Simplifies calculations: base value is set so that 1rem = 10px for easy development
-
Intelligent scaling: The
app/vendor/rem/rem.js
script automatically sets the font size for the<html>
tag based on screen resolution:// Examples of scaling coefficients for different devices if (width > 2000) fontSize = 12 * koeff; // 2K+ resolutions if (width <= 1600) fontSize = 10.8 * koeff; // Large laptops if (width <= 1400) fontSize = 12.5 * koeff; // Small laptops // ...and so on for other screen sizes
-
Easy conversion from PX to REM: The system is configured so that on standard resolutions 1rem ≈ 10px, which makes calculations extremely simple:
/* Instead of this */ .button { padding: 15px 20px; /* px */ font-size: 16px; margin-bottom: 20px; } /* Write like this */ .button { padding: 1.5rem 2rem; /* 15px 20px */ font-size: 1.6rem; /* 16px */ margin-bottom: 2rem; /* 20px */ }
-
Testing adaptivity: Just stretch the browser window or change the zoom level to see how all interface elements scale proportionally without a single media query.
-
Fine-tuning: You can easily change the scaling coefficients in
app/vendor/rem/rem.js
for different resolution ranges.
- Less code: No need to write dozens of media queries for different resolutions
- Natural scaling: All elements scale proportionally and smoothly
- Easy maintenance: Changes in one file affect the entire site adaptivity
- Responsiveness: The site looks good even on non-standard resolutions and when zooming
- Stretch the browser window horizontally and vertically to see how all elements scale
- Change the page zoom (Ctrl+/- or mouse wheel with Ctrl) to test different screen sizes
- Check on 2K+ monitors or change zoom to simulate such resolutions
- Use developer tools to inspect styles and verify that all elements use rem
Note: For very specific elements and mobile devices, it's still recommended to use targeted media queries, but the main adaptivity is achieved without them.
# Development mode (also can use dev.bat or simply dev command)
npm run dev
# Build project without minification (also build.bat or build command)
npm run build
# Build project with minification and image optimization (build-min.bat or build-min command)
npm run build-min
# Preview the built project (preview.bat or preview command)
npm run preview
You can use the following directives in HTML files:
@@include('html/header.html')
@@include('html/header.html', {"title":"Home Page"})
In the header.html
file, you can use parameters with the @@parameter_name
syntax. For example:
<title>@@title</title>
You can use special prefixes to specify paths to resources:
<link rel="stylesheet" href="@scss/main.scss">
<script src="@js/app.js"></script>
<img src="@img/logo.png">
<script src="@vendor/jquery/jquery.min.js"></script>
<script type="module" src="@utils/helper.js"></script>
<a href="@files/documents/sample.pdf">Download document</a>
These prefixes will be automatically converted to appropriate paths during the build.
Aliases are also available in SCSS files for imports:
// Imports with aliases
@import "@scss/variables";
@import "@scss/mixins";
.element {
background-image: url("@img/background.jpg");
}
The project implements a convenient function for converting fonts from the TTF format to a more optimized WOFF2 format, which provides better performance and smaller file size.
To convert fonts, use one of the following commands:
# Through BAT file (Windows)
fonts.bat
# Or through npm script
npm run fonts:convert
- Searches for TTF files in the
app/fonts/
directory - For each TTF file, creates a corresponding WOFF2 file next to it
- If a WOFF2 file already exists, it will not be created again (to overwrite existing files, use the
--force
option)
When using the npm run fonts:convert
command, you can specify additional parameters:
# Specify a different fonts directory
npm run fonts:convert -- --fonts-dir path/to/fonts
# Force conversion (overwrite existing WOFF2 files)
npm run fonts:convert -- --force
- 10-100x faster development server startup
- Instant application of changes thanks to ESM
- Native support for SCSS, PostCSS out of the box
- No long chains of .pipe().pipe().pipe()...
- Fewer dependencies, fewer problems with outdated plugins
- Simple configuration and extensibility
We hope this setup will make your work not only more efficient but also more enjoyable! If you have ideas for improving the setup or you find a bug - create an issue or send a pull request.
- Node.js >= 16
- npm or yarn
vite
vite-config
vite-for-html
html-include
file-include
vite-file-include
html-css
frontend-build
frontend
html-components
scss
sass
web-dev
imagemin
multi-page
web-optimization
adaptive-rem
responsive
no-media-queries
fluid-layout
rem-based
auto-adaptive
ttf-to-woff2
font-converter