логотип PurpleSchool
логотип PurpleSchool

Создание и настройка проектов Vue с помощью Vue CLI

Автор

Елена Соколова

Введение

Vue CLI — это мощный инструмент, который помогает разработчикам быстро запускать новые проекты на Vue, автоматизирует конфигурацию, сборку и управление зависимостями. Сегодня, когда нужно за считанные минуты развернуть продвинутый фронтенд-проект, возможности CLI становятся особенно актуальными. Здесь вы узнаете, как создать новый проект с помощью Vue CLI, как его настраивать, управлять настройками, подключать плагины и даже кастомизировать webpack-конфигурацию проекта под ваши требования.


Установка Vue CLI

Прежде чем приступить к созданию Vue-проекта, потребуется установить сам инструмент.

Глобальная установка

Vue CLI распространяется как npm-пакет. Убедитесь, что у вас установлен Node.js версии 8.9 или выше. Затем выполните команду:

npm install -g @vue/cli
# Если нужен доступ к GUI:
# npm install -g @vue/cli-service-global

Вы также можете проверить установленную версию:

vue --version
# Выведет, например: 5.0.8

Если команда vue недоступна — перезапустите терминал или добавьте папку npm глобальных модулей в PATH.


Создание нового Vue-проекта

Теперь рассмотрим, как быстро развернуть новый проект.

Создание с помощью командной строки

Выполните следующую команду:

vue create my-vue-app  # my-vue-app — имя каталога нового проекта

Далее вы увидите интерактивный мастер настройки, где CLI спросит:

  • Использовать "Default preset" (Babel + ESLint) или "Manually select features"

Если хотите полный контроль вы, как правило, выбираете ручной режим (Manually select features):

  • Babel
  • TypeScript
  • Progressive Web App (PWA) Support
  • Router
  • Vuex
  • CSS Pre-processors (Sass, Less, Stylus)
  • Linter / Formatter
  • Unit Testing
  • E2E Testing

Вот пример, как выглядит выбор в терминале:

? Please pick a preset:
  Default ([Vue 3] babel, eslint)
❯ Manually select features

Затем CLI предложит выбрать конкретные опции. Вы можете определять структуру будущего проекта и даже сохранить выбранный пресет для будущего использования.

Настройки хранения конфигурации

Во время создания проекта Vue предложит сохранить настройки:

  • В отдельных файлах (например, babel.config.js, eslint.config.js)
  • В package.json

Обычно удобнее работать через отдельные конфиги, особенно если проект разрастается.

Кратко о структуре сгенерированного проекта

После создания вы увидите структуру примерно следующего вида:

my-vue-app/
├─ node_modules/       # зависимости npm
├─ public/             # статичные ресурсы (index.html и пр.)
├─ src/                # исходный код приложения
│  ├─ assets/
│  ├─ components/
│  ├─ App.vue
│  └─ main.js
├─ .gitignore
├─ babel.config.js     # опционально
├─ package.json
└─ README.md

Комментарии:

  • src/ — здесь основной код приложения
  • public/ — статические файлы, favicon, основной HTML-шаблон
  • package.json — зависимости, скрипты запуска
  • babel.config.js, .eslintrc.js и другие — дополнительные настройки

Управляющие команды Vue CLI

После успешного создания проекта вы будете пользоваться командами CLI для разработки и сборки.

Основные команды

В package.json уже имеются необходимые скрипты:

"scripts": {
  "serve": "vue-cli-service serve",     // запуск сервера разработки
  "build": "vue-cli-service build",     // сборка на прод
  "lint": "vue-cli-service lint"        // проверка кода
}

Запуск сервера разработки

npm run serve
# или
yarn serve
  • Сервер обычно поднимается на http://localhost:8080/
  • Изменения в исходниках отображаются мгновенно, благодаря hot reload

Сборка проекта

npm run build

После выполнения этой команды будет создан каталог dist/ со всеми собранными и оптимизированными файлами для деплоя.

Линтинг и автокоррекция кода

npm run lint
# Автоматическая фиксация:
npm run lint -- --fix

Добавление функциональности через плагин Vue CLI

CLI поддерживает расширения через плагины — например, можно добавить роутер, Vuex или поддержку тестирования после создания проекта.

Добавление роутера и Vuex

vue add router    # добавит vue-router и создаст файл конфигурации
vue add vuex      # добавит Vuex для управления состоянием приложения
  • CLI задаст вам вопросы: нужна ли история, требуется ли создать демо-страницы и т. д.

Добавление других популярных плагинов

Примеры команд:

vue add eslint         # добавить или переустановить поддержку ESLint
vue add unit-jest      # подключить unit-тесты
vue add typescript     # перейти на TypeScript (будет произведена миграция файлов)
vue add pwa            # активировать поддержку PWA

Плагины зачастую добавляют свои скрипты, конфиги, пакеты и автоматически меняют/добавляют нужные файлы. Все изменения подробно отображаются в консоли.


Работа с графическим интерфейсом (Vue UI)

Для тех, кто не любит работать в консоли, в Vue CLI есть графический интерфейс.

Запуск Vue UI

vue ui
  • Откроется окно в браузере (обычно http://localhost:8000/)
  • Можно создавать, настраивать, запускать проекты и управлять зависимостями с помощью удобного интерфейса
  • Включены визуальные инструменты мониторинга, настройки плагинов и анализ сборки

Конфигурирование и кастомизация проекта

Vue CLI позволяет использовать шаблоны, плагины и донастройки, чтобы проект максимально подходил под ваши задачи.
Ниже расскажу вам, как вносить изменения в конфигурацию и структуру.

Конфигурационный файл vue.config.js

Если проекту требуются дополнительные настройки, создайте в корне проекта файл vue.config.js.

Пример базовой конфигурации

// vue.config.js
module.exports = {
  publicPath: '/',            // Базовый URL для деплоя приложения
  outputDir: 'dist',          // Каталог сборки
  assetsDir: 'static',        // Каталог для статичных ресурсов (js, css, img)
  devServer: {
    port: 3000,               // Порт для сервера разработки
    proxy: 'http://localhost:8000' // Прокси для API-запросов
  },
  lintOnSave: false           // Отключение проверки ESLint при сохранении
};

Показываю вам, как с помощью vue.config.js можно быстро настраивать окружение под разные условия.

Расширение конфигурации webpack

Для особых случаев (например, подключение нестандартных лоадеров или алиасов) CLI поддерживает функцию configureWebpack или chainWebpack в файле vue.config.js.

Пример: Добавление alias

module.exports = {
  configureWebpack: {
    resolve: {
      alias: {
        '@components': require('path').resolve(__dirname, 'src/components')
      }
    }
  }
};

Теперь вместо длинного относительного пути можно использовать короткое "@components/MyComponent".

Пример: Использование chainWebpack

module.exports = {
  chainWebpack: config => {
    // Добавляем новый loader для markdown
    config.module
      .rule('md')
      .test(/\.md$/)
      .use('raw-loader')
      .loader('raw-loader')
      .end();
  }
};

Этот подход особенно гибкий для сложных проектов.


Установка зависимостей и настройка CSS препроцессоров

Когда вы создаете новый проект, Vue CLI может автоматически добавить поддержку препроцессоров (Sass, Less, Stylus).

Как добавить препроцессор в существующий проект

Если при создании проекта не был выбран нужный препроцессор, вы можете установить его позже:

Пример для Sass

npm install -D sass sass-loader

Пример для Less

npm install -D less less-loader

Теперь используйте расширения .scss или .less в ваших компонентах Vue:

<style lang="scss">
// Теперь можно использовать синтаксис Sass внутри <style>
$color: red;
body { color: $color; }
</style>

Управление зависимостями и добавление библиотек

Работа с зависимостями не отличается от других проектов на Node.js:

Установка новых библиотек

npm install axios   # пример — подключаем axios для HTTP-запросов
npm install lodash  # другая популярная библиотека
npm install moment  # библиотека для работы с датами

Подключайте новую библиотеку в компоненте:

import axios from 'axios';

// Пример запроса внутри метода компонента
methods: {
  fetchData() {
    axios.get('https://api.example.com/data')
      .then(response => {
        this.data = response.data;
      });
  }
}

Настройка окружений (development, production и пр.)

Vue CLI поддерживает разные конфигурации для окружения:

  • .env — глобальные переменные окружения
  • .env.development — переменные для dev-режима
  • .env.production — для production

Пример переменных окружения

# .env.production
VUE_APP_API_URL=https://api.prod.example.com

В коде используйте:

const baseUrl = process.env.VUE_APP_API_URL; // Получаем адрес API из переменной

CLI по умолчанию пропускает только переменные, начинающиеся с VUEAPP (остальные проигнорируются для безопасности).


Сборка и деплой

Когда проект готов — остается собрать и опубликовать результат.

Сборка на продакшн

npm run build
# Создает папку dist/ с итоговыми файлами

Деплой на сервер

  • Содержимое папки dist/ скопируйте на сервер (Apache, nginx, Netlify, Vercel и т.д.)
  • Для SPA можно настроить redirect всех запросов на index.html

Пример для nginx:

location / {
  try_files $uri $uri/ /index.html;
}

Работа с Typescript в Vue CLI

Vue CLI позволяет прямо из мастера создания подключить поддержку TypeScript, либо добавить ее позже командой:

vue add typescript

После этого файлы *.vue и скриптов можно писать на TS. CLI добавит tsconfig.json и пересоберет имеющиеся JS-файлы в TS-шаблоны.


Кастомные шаблоны проектов

Vue CLI поддерживает создание собственных шаблонов проектов.

Как использовать сторонний шаблон

vue create --preset username/repo#branch my-app
# или
vue create --preset ./local-preset my-app

Это помогает стандартизировать собственные подходы в команде или компании.


Заключение

Vue CLI значительно упрощает создание и развитие проектов на Vue. Он автоматически конфигурирует большую часть стека, позволяет гибко расширять проект с помощью плагинов, поддерживает кастомизацию и ускоряет разработку благодаря удобным инструментам — будь то консоль или графический интерфейс. Ваша команда получает сразу готовую структуру, уже оптимизированную для современного фронтенда, с возможностью легко настраивать и масштабировать приложение под любые задачи.


Частозадаваемые технические вопросы по теме статьи и ответы на них

Как добавить поддержку SCSS/Sass в уже созданный проект, если изначально не выбрал?

Установите нужные пакеты:

npm install -D sass sass-loader

Перезапустите сервер разработки. После этого используйте <style lang="scss"> или <style lang="sass"> внутри файлов *.vue.


Как сбросить кэш vue-cli или решить проблемы странных зависимостей?

Иногда помогает удаление node_modules и package-lock.json/yarn.lock:

rm -rf node_modules
rm package-lock.json    # или yarn.lock
npm install

Если баги воспроизводятся при работе с vue-cli глобально — обновите cli:

npm uninstall -g @vue/cli
npm install -g @vue/cli

Где и как хранить секретные ключи или переменные окружения в проекте Vue?

В открытых репозиториях не используйте .env прямо с секретами. Задавайте переменные без чувствительных данных или используйте отдельные файлы .env.local, которых нет в VCS. Все переменные должны начинаться с VUEAPP, чтобы попасть в сборку.


Как изменить порт разработки по умолчанию с 8080 на другой?

Создайте или измените vue.config.js:

module.exports = {
  devServer: {
    port: 3001 // Здесь укажите нужный порт
  }
}

Перезапустите сервер разработки.


Как включить поддержку многословных алиасов (например, @utils/helper) в проекте?

В vue.config.js добавьте свой алиас через configureWebpack или chainWebpack:

module.exports = {
  configureWebpack: {
    resolve: {
      alias: {
        '@utils': path.resolve(__dirname, 'src/utils/')
      }
    }
  }
}

Не забудьте импортировать path: const path = require('path');

Стрелочка влевоРабота с конфигурационными файлами и скриптами Vue

Все гайды по Vue

Работа с пользовательскими интерфейсами и UI библиотеками во VueОрганизация и структура исходных файлов в проектах VueОбзор популярных шаблонов и стартовых проектов на VueКак организовать страницы и маршруты в проекте на VueСоздание серверных приложений на Vue с помощью Nuxt jsРабота со стилями и CSS в Vue js для красивых интерфейсовСоздание и структурирование Vue.js приложенияНастройка и сборка проектов Vue с использованием современных инструментов
Управление переменными и реактивными свойствами во VueИспользование v for и slot в VueТипизация и использование TypeScript в VuejsИспользование шаблонов в Vue js для построения интерфейсовПередача данных между компонентами с помощью props в Vue jsУправление property и функциями во Vue.jsОсновы работы с объектами в VueПонимание жизненного цикла компонента Vue js на примере mountedИспользование метода map в Vue для обработки массивовОбработка пользовательского ввода в Vue.jsОрганизация файлов и структура проекта Vue.jsКомпоненты Vue создание передача данных события и emitИспользование директив и их особенности на Vue с помощью defineСоздание и использование компонентов в Vue JSОбработка кликов и пользовательских событий в Vue
Открыть базу знаний