Настройка сборки Vue.js (Webpack/Vite) для проекта 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка сборки Vue.js (Webpack/Vite) для проекта 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1265
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    855
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    590
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    752
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    658
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    991

Настройка сборки Vue.js (Webpack/Vite) для проекта 1С-Битрикс

Битрикс исторически жил без сборщика — PHP-шаблоны, CDN-подключения jQuery и плагинов, минимальный JS в template.php. Добавление Vue меняет это: нужна компиляция .vue файлов, транспиляция современного JS, разбивка на чанки, tree-shaking. Неправильно настроенная сборка даёт 1MB+ бандл на каждой странице или конфликты с битриксовыми скриптами.

Vite для новых проектов

Vite — стандарт для Vue 3-проектов. Основные преимущества в контексте Битрикса: мгновенный dev-сервер (HMR без полного ребилда), быстрая production-сборка через Rollup, встроенная поддержка TypeScript и .vue SFC.

Базовая конфигурация для Битрикс-проекта:

// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path';

export default defineConfig({
    plugins: [vue()],
    root: 'local/vue-src',
    build: {
        outDir: '../../local/dist',
        emptyOutDir: true,
        manifest: true,  // генерирует manifest.json для PHP
        rollupOptions: {
            input: {
                catalog: 'local/vue-src/catalog/main.js',
                cart: 'local/vue-src/cart/main.js',
                lk: 'local/vue-src/lk/main.js',
            },
        },
    },
    resolve: {
        alias: { '@': path.resolve(__dirname, 'local/vue-src') },
    },
});

manifest: true — Vite генерирует manifest.json с маппингом входной файл → хешированное имя. PHP читает этот файл и подключает актуальный бандл:

// helpers/vite.php
function viteAsset(string $entry): string {
    $manifest = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/local/dist/.vite/manifest.json'), true);
    return '/local/dist/' . $manifest[$entry]['file'];
}

// В шаблоне
\Bitrix\Main\Page\Asset::getInstance()->addJs(viteAsset('catalog/main.js'));

Dev-сервер и прокси

В development-режиме Vite запускает HMR-сервер на порту 5173. Битрикс работает на стандартном 80/443. Прокси в vite.config.js:

server: {
    proxy: {
        '/bitrix': 'http://localhost',
        '/local': 'http://localhost',
        '/api': 'http://localhost',
    },
    https: false,
},

Теперь в браузере открывается http://localhost:5173, Vite проксирует PHP-запросы на Битрикс. HMR работает — изменение .vue файла применяется без перезагрузки страницы.

Альтернатива: запускать Битрикс-сайт как обычно (http://project.loc), а Vite-скрипты подключать с dev-сервера через условие в PHP:

$isDev = getenv('APP_ENV') === 'development';
if ($isDev) {
    echo '<script type="module" src="http://localhost:5173/@vite/client"></script>';
    echo '<script type="module" src="http://localhost:5173/catalog/main.js"></script>';
} else {
    $PAGE->AddScript(viteAsset('catalog/main.js'));
}

Разбивка на чанки и оптимизация

Vue 3 runtime — ~30KB gzip. Если несколько Vue-приложений на одной странице используют одни зависимости (Vue, Pinia), Rollup должен вынести их в shared chunk:

rollupOptions: {
    output: {
        manualChunks: {
            'vue-vendor': ['vue', 'pinia', 'vue-router'],
        },
    },
},

vue-vendor.js загружается один раз и кешируется. Отдельные приложения (каталог, корзина) — маленькие чанки по 10-50KB.

Webpack: когда он обоснован

Webpack остаётся актуальным, если: проект уже использует Laravel Mix (который Битрикс иногда использует как сборщик), команда глубоко знает Webpack-конфигурацию, нужны специфичные плагины без Vite-аналогов.

// webpack.config.js для Битрикс
const { VueLoaderPlugin } = require('vue-loader');
module.exports = {
    entry: { catalog: './local/vue-src/catalog/main.js' },
    output: { path: path.resolve(__dirname, 'local/dist'), filename: '[name].[contenthash].js' },
    module: {
        rules: [
            { test: /\.vue$/, loader: 'vue-loader' },
            { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ },
        ],
    },
    plugins: [new VueLoaderPlugin()],
};

Webpack медленнее Vite в dev-режиме, но production-сборки сопоставимы по размеру.

Конфликты с битриксовыми скриптами

Битрикс подключает jQuery через CJSCore, Vue должен знать, что jQuery — внешняя зависимость:

// vite.config.js
build: {
    rollupOptions: {
        external: ['jquery'],
        output: { globals: { jquery: 'jQuery' } },
    },
}

Если Vue-компонентам не нужен jQuery — external не нужен, они просто не импортируют его.

Типичный срок: базовая настройка Vite с несколькими точками входа, PHP-интеграция через manifest, настройка dev-сервера — 1-2 рабочих дня. Настройка CI/CD пайплайна с автоматической сборкой перед деплоем — дополнительно 1 день.