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

Управление пакетами Vue js с помощью npm

Автор

Олег Марков

Введение

Пакетные менеджеры стали неотъемлемой частью современного веб-разработчика. Если вы работаете с Vue.js, особенно в среде Node.js, то npm — это ваш основной инструмент для управления зависимостями. Через npm вы устанавливаете, обновляете, удаляете компоненты и плагины, которые делают ваш проект мощнее и удобнее. Без погони за сложными официальными объяснениями, разберёмся, как организовать работу с пакетами Vue.js через npm, чтобы вы могли быстрее и увереннее двигаться по проекту.

Что такое npm и зачем он Vue.js

Node Package Manager (npm) — это система, которая позволяет искать, устанавливать и управлять сотнями тысяч пакетов JavaScript. Vue.js и его экосистема (например, Vue Router, Vuex) поставляются как npm-пакеты. Если вы хотите развернуть современный Vue-проект, управлять компонентами, подключать библиотеки (например, для UI, валидаций, работы с HTTP), вам не обойтись без знание npm.

Вот главное, что вам даёт npm в работе с Vue.js:

  • Быстрая установка любых библиотек в проект
  • Автоматическое управление версиями зависимостей
  • Возможность легко обновлять или удалять пакеты
  • Простое подключение зависимостей из командной строки
  • Хранение списка всех зависимостей вашего проекта (файл package.json)

Установка Vue.js с помощью npm: пошагово

1. Инициализация проекта

Перед установкой любых пакетов полезно создать новый проект или подготовить текущий. В папке будущего проекта откройте терминал и выполните команду:

npm init -y

Этот шаг создаёт файл package.json, где будут хранятся конфигурация проекта и список зависимостей.

2. Установка самого Vue.js

Чтобы добавить Vue.js в проект, используйте команду:

npm install vue

В результате в разделе dependencies файла package.json появится запись про vue.

"dependencies": {
  "vue": "^3.4.0"
}
  • Если вы работаете с Vue CLI, скорее всего вам не нужно отдельно ставить корневой пакет vue, т.к. CLI устанавливает всё необходимое автоматически.
  • Для Vue 2.x синтаксис установки аналогичен.

3. Быстрый старт: первая точка входа

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

// Импорт компонента Vue
import { createApp } from 'vue'
// Импорт главного компонента приложения
import App from './App.vue'

// Создание и монтирование экземпляра приложения
createApp(App).mount('#app')

Теперь у вас есть современное SPA-приложение на Vue.js, управляемое через npm.

Управление зависимостями: основные команды npm для Vue.js

Установка новых пакетов

Чтобы подключить к Vue-проекту какую-либо дополнительную библиотеку (например, axios для HTTP-запросов или Vue Router для маршрутизации), используйте:

npm install <название-пакета>

Давайте рассмотрим два примера:

npm install vue-router     # Добавляем маршрутизатор
npm install axios          # Добавляем библиотеку для запросов

Теперь Vue Router и axios указаны как зависимости. В package.json вы заметите:

"dependencies": {
  "vue": "^3.4.0",
  "vue-router": "^4.1.0",
  "axios": "^1.6.0"
}

Установка devDependencies

Часть библиотек не нужна на вашем «боевом» сервере, а только во время разработки. Это, например, инструменты сборки или тестирования. Переместить их в отдельный раздел можно так:

npm install eslint --save-dev
  • --save-dev или коротко -D кладёт зависимость в раздел devDependencies

Удаление пакета

Если пакет больше не нужен, его легко убрать:

npm uninstall <название-пакета>

Например:

npm uninstall axios

Этот пакет исчезнет из package.json, а его файлы будут удалены из node_modules.

Обновление зависимостей

Чтобы обновить только один пакет, используйте:

npm update <название-пакета>

Чтобы обновить всё сразу:

npm update

Есть особая команда, если хотите определить желаемую версию пакета:

npm install vue-router@4.1.4

— эта команда установит конкретную версию.

Проверка установленных пакетов

Для просмотра всех пакетов и их версий:

npm list --depth=0

Это выдаст список всех корневых зависимостей текущего проекта (без вложенных пакетов).

Работа с пакетами глобально

Обычно все пакеты ставятся локально — в рамках одного проекта. Но инструменты, такие как Vue CLI или Vite, обычно удобно ставить глобально:

npm install -g @vue/cli
  • Опция -g делает пакет доступным из любой папки на компьютере.

Практика: работа с пакетами для расширения Vue.js

Добавление Vue Router

Vue Router один из самых частых спутников любого Vue-приложения. Давайте разберём подключение:

npm install vue-router

Теперь создаём файл маршрутизации, например, router/index.js:

// Здесь мы импортируем функции маршрутизатора и Vue
import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
import AboutView from '../views/AboutView.vue'

// Определяем маршруты приложения
const routes = [
  { path: '/', component: HomeView },
  { path: '/about', component: AboutView }
]

// Создаём сам маршрутизатор
const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

В основном файле приложения:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

// Применяем маршрутизатор перед монтированием приложения
createApp(App).use(router).mount('#app')

Установка и настройка Vuex

Vuex — это пакет для централизованного управления состоянием, широко используемый в крупных проектах.

npm install vuex@next

Пример подключения (файл store/index.js):

import { createStore } from 'vuex'

// Основной store приложения
export default createStore({
  state() {
    return {
      counter: 0
    }
  },
  mutations: {
    increment(state) {
      state.counter++
    }
  }
})

Далее в основной точке входа:

import { createApp } from 'vue'
import App from './App.vue'
import store from './store'

createApp(App).use(store).mount('#app')

Интеграция сторонних UI-библиотек

Часто разработчики используют UI-фреймворки вроде Vuetify, Element Plus или BootstrapVue.

Установка делается аналогично другим пакетам:

npm install vuetify

Интеграция Vuetify:

import { createApp } from 'vue'
import App from './App.vue'
import vuetify from './plugins/vuetify' // Создаём файл для настройки Vuetify

createApp(App).use(vuetify).mount('#app')

В файле plugins/vuetify.js:

import 'vuetify/styles'       // Импортируем стили Vuetify
import { createVuetify } from 'vuetify'

export default createVuetify({
  // Здесь можно настроить темы, плагины и т.д.
})

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

Допустим, вам нужно добавить Jest для юнит-тестов:

npm install jest --save-dev

Теперь в разделе devDependencies появится Jest. Далее можно добавить настройку скрипта тестирования в package.json:

"scripts": {
  "test": "jest"
}

Работа с package.json

Роль package.json

package.json — это сердце любого npm-проекта. Здесь хранятся:

  • Список зависимостей (dependencies, devDependencies)
  • Скрипты для запуска различных команд (scripts)
  • Данные о вашем проекте (название, версия, описание)

Без этого файла npm не сможет управлять зависимостями.

Пример файла package.json

{
  "name": "my-vue-app",
  "version": "1.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview",
    "test": "jest"
  },
  "dependencies": {
    "vue": "^3.4.0",
    "vue-router": "^4.1.0"
  },
  "devDependencies": {
    "vite": "^4.0.0",
    "jest": "^29.0.0"
  }
}

Раздел scripts позволяет, например, запускать сервер разработки или сборку одной командой из терминала:

npm run dev
npm run build
npm run test

Работа с node_modules и package-lock.json

Что лежит в node_modules

Всякий раз при установке пакета в нужную папку складываются его исходные файлы и файлы других зависимостей — всё это хранится в папке node_modules. Обычно эту папку не включают в систему контроля версий (например, .gitignore).

Зачем нужен package-lock.json

npm install

Когда вы запускаете эту команду без параметров, npm читает файл package.json и скачивает требуемые пакеты. А чтобы фиксировать конкретные версии всех (даже вложенных) зависимостей и обеспечить повторяемость установки, используется механизм package-lock.json.

  • Этот файл генерируется автоматически
  • Его важно коммитить в git — чтобы у всех участников проекта были идентичные версии зависимостей

Полезные npm-команды для управления пакетами Vue.js

КомандаОписание
npm installУстановить все зависимости, указанные в package.json
npm install <пакет>Установить отдельный пакет
npm uninstall <пакет>Удалить пакет из зависимостей
npm updateОбновить все существующие пакеты
npm outdatedПоказать устаревшие пакеты
npm lsПоказать древовидный список всех установленных пакетов
npm run Запустить скрипт, описанный в package.json

Теперь вы видите, насколько универсален и удобен npm в управлении вашим Vue-проектом.

Работа с альтернативными пакетными менеджерами

Коротко о Yarn и pnpm

Хотя npm — стандартный менеджер пакетов, на рынке есть аналоги, например, Yarn или pnpm. Большинство принципов аналогичны: структура пакетов, необходимость package.json, команды для установки и обновления. Иногда альтернативные менеджеры используются для ускорения установки или для решения специфических задач вроде работы с монорепозиториями или кеширования пакетов.

Однако официальная документация Vue.js всегда ориентируется именно на npm. Если вы новичок — советую держаться npm хотя бы на первых порах: все примеры в сообществе тоже обычно приводятся для него.

Заключение

npm — универсальный и мощный инструмент для управления пакетами в проектах на Vue.js. С ним вы легко сможете подключать любые сторонние модули, обновлять их, избавляться от неактуальных зависимостей, а ваш проект всегда будет оставаться целостным и повторяемым для остальных разработчиков. Особое внимание стоит уделять работе с файлами package.json и package-lock.json: они позволят вам иметь полный контроль над версионностью и конфигурацией зависимостей.

Управление пакетами через npm — базовый навык фронтенд-разработчика, и чем быстрее вы освоитесь с этими командами и файлами- тем больше времени сможете уделять самому приложению, а не рутине по поддержке библиотек.

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

Как добавить зависимость только для определённой среды (например, только для продакшена)?

Для такого разделения npm не предоставляет встроенного инструмента. Обычно все зависимости, кроме инструментов для разработки (тесты, линтеры), помещают в section dependencies. Для разделения логики запуска можно в scripts вашего package.json использовать переменные среды.

Что делать, если после установки нового пакета возникает конфликт версий?

Обычно npm подбирает совместимую версию. Если возникает конфликт, попробуйте удалить node_modules и package-lock.json, затем выполнить npm install заново. Если проблема остаётся — вручную задайте нужные версии зависимостей в package.json.

Как полностью удалить все установленные пакеты и очистить проект?

Выполните команду: bash rm -rf node_modules package-lock.json npm install Это удалит все зависимости и их lock-файл, затем переустановит самые свежие совместимые версии.

Как обновить только конкретную зависимость до новейшей версии, игнорируя ограничения из package.json?

Запустите: bash npm install <пакет>@latest Это обновит зависимость до самой актуальной версии.

Как узнать, какой пакет принадлежит к devDependencies, а какой к dependencies?

Откройте файл package.json и посмотрите на разделы:

  • Всё в разделе dependencies — основной функционал, нужен для работы приложения.
  • Всё в разделе devDependencies — используется только во время разработки (тесты, сборщики, линтеры и др.).
Стрелочка влевоИнструкция по установке и компонентам Vue sliderУправление пакетами и node modules в Vue проектахСтрелочка вправо

Постройте личный план изучения Vue до уровня Middle — бесплатно!

Vue — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Vue

Руководство по валидации форм во Vue.jsИнтеграция Tiptap для создания редакторов на VueРабота с таблицами во Vue через TanStackИнструкция по установке и компонентам Vue sliderУправление пакетами Vue js с помощью npmУправление пакетами и node modules в Vue проектахКак использовать meta для улучшения SEO на VueПолный гайд по компоненту messages во Vuejs5 правил использования Inertia с Vue и LaravelРабота с модулями и пакетами в VueИнструкция по работе с grid на VueGithub для Vue проектов - подробная инструкция по хранению и совместной работеНастройка ESLint для Vue проектов и поддержка качества кодаОбработка ошибок и отладка в Vue.jsИспользование Vue Devtools для отладки и мониторинга приложенийРабота с конфигурационными файлами и скриптами VueСоздание и настройка проектов Vue с помощью Vue CLI3 способа интеграции Chart.js с Vue для создания графиковРабота с Canvas во VueИнструкция по реализации календаря во VueРабота с Ant Design Vue для создания UI на Vue
Обзор и использование утилит Vue для удобной разработкиРабота с обновлениями компонента и жизненным циклом updateИспользование query-параметров и их обработка в маршрутах VueРазрешение конфликтов и ошибок с помощью Vue resolveЗагрузка и управление состоянием загрузки в VueИспользование библиотек Vue для расширения функционалаРабота с JSON данными в приложениях VueКак работать с экземплярами компонента Instance во VueПолучение данных и API-запросы во Vue.jsЭкспорт и импорт данных и компонентов в VueОбработка событий и их передача между компонентами VuejsГайд по defineEmits на Vue 3Понимание core функционала Vue и его применениеПонимание и применение Composition API в Vue 3Понимание и работа с компилятором VueКогда и как использовать $emit и call во VueВзаимодействие с внешними API через Axios в Vue
Веб приложения на Vue архитектура и лучшие практикиИспользование Vite для быстрого старта и сборки проектов на Vue 3Работа с URL и ссылками в приложениях на VueРабота с пользовательскими интерфейсами и UI библиотеками во VueОрганизация и структура исходных файлов в проектах VueИспользование Quasar Framework для разработки на Vue с готовыми UI-компонентамиОбзор популярных шаблонов и стартовых проектов на VueИнтеграция Vue с PHP для создания динамичных веб-приложенийКак организовать страницы и маршруты в проекте на VueNuxt JS и Vue 3 для SSR приложенийСоздание серверных приложений на Vue с помощью Nuxt jsИспользование Vue Native для разработки мобильных приложенийОрганизация и управление индексной страницей в проектах VueИспользование Docker для контейнеризации приложений на VueИнтеграция Vue.js с Django для создания полноценных веб-приложенийСоздание и работа с дистрибутивом build dist Vue приложенийРабота со стилями и CSS в Vue js для красивых интерфейсовСоздание и структурирование Vue.js приложенияКак исправить ошибку cannot find module vueНастройка и сборка проектов Vue с использованием современных инструментовИнтеграция Vue с Bitrix для корпоративных решенийРазработка административных панелей на Vue js
5 библиотек для создания tree view во VueИнтеграция Tailwind CSS с Vue для современных интерфейсовИнтеграция Vue с серверной частью и HTTPS настройкамиКак обрабатывать async операции с Promise во VueИнтеграция Node.js и Vue.js для разработки приложенийРуководство по интеграции Vue js в NET проектыПримеры использования JSX во VueГайд по импорту и регистрации компонентов на VueМногоязычные приложения на Vue с i18nИнтеграция FLIR данных с Vue5 примеров использования filter во Vue для упрощения разработки3 примера реализации drag-and-drop во Vue
Управление переменными и реактивными свойствами во VueИспользование v for и slot в VueПрименение v-bind для динамической привязки атрибутов в VueУправление пользователями и их данными в Vue приложенияхСоздание и использование UI Kit для Vue приложенийТипизация и использование TypeScript в VuejsИспользование шаблонов в Vue js для построения интерфейсовИспользование Swiper для создания слайдеров в VueРабота со стилями и стилизацией в VueСтруктура и особенности Single File Components SFC в VueРабота со SCSS в проектах на Vue для стилизацииРабота со скроллингом и прокруткой в Vue приложенияхПрименение script setup синтаксиса в Vue 3 для упрощения компонентовИспользование scoped стилей для изоляции CSS в компонентах Vue3 способа улучшить навигацию Vue с push()Обработка запросов и асинхронных операций в VueПонимание и использование provide inject для передачи данных между компонентамиПередача и использование props в Vue 3 для взаимодействия компонентовПередача данных между компонентами с помощью props в Vue jsУправление property и функциями во Vue.jsРабота со свойствами компонентов VueУправление параметрами и динамическими данными во VueРабота с lifecycle-хуком onMounted во VueОсновы работы с объектами в VueПонимание жизненного цикла компонента Vue js на примере mountedИспользование модальных окон modal в Vue приложенияхИспользование методов в компонентах Vue для обработки логикиИспользование метода map в Vue для обработки массивовИспользование хуков жизненного цикла Vue для управления состоянием компонентаРабота с ключами key в списках и компонентах VueОбработка пользовательского ввода в Vue.jsРабота с изображениями и их оптимизация в VueИспользование хуков жизненного цикла в VueОрганизация сеток и гридов для верстки интерфейсов на VueСоздание и управление формами в VueОрганизация файлов и структура проекта Vue.jsКомпоненты Vue создание передача данных события и emitРабота с динамическими компонентами и данными в Vue3 способа манипулирования DOM на VueРуководство по div во VueИспользование директив в Vue и их расширенные возможностиОсновы и применение директив в VueИспользование директив и их особенности на Vue с помощью defineИспользование компонентов datepicker в Vue для выбора датОрганизация циклов и итераций во VueКак работает компиляция Vue CoreСоздание и использование компонентов в Vue JSОбработка кликов и пользовательских событий в VueИспользование классов в Vue для организации кода и компонентовИспользование директивы checked для управления состоянием чекбоксов в VueГайд на checkbox компонент во VueОтображение данных в виде графиков с помощью Vue ChartСоздание и настройка кнопок в VueСоздание и настройка кнопок в Vue приложенияхРабота с lifecycle-хуками beforeCreate и beforeMount во VueИспользование массивов и методов их обработки в VueИспользование массивов и их обработка в Vue
Использование Vuetify для создания современных интерфейсов на VueИспользование transition во VueТестирование компонентов и приложений на VueРабота с teleport для управления DOM во VueПять шагов по настройке SSR в VuejsИспользование Shadcn UI компонентов с Vue для продвинутых интерфейсовИспользование router-link для навигации в Vue RouterКак использовать require в Vue для динамического импорта модулейРабота с динамическим рендерингом и виртуальным DOM на Vue.jsИспользование ref для управления ссылками и реактивностью в Vue 3Использование Vue Pro и его преимущества для профессиональной разработкиРуководство по nextTick для работы с DOMСоздание и использование компонентов с помощью Vue js и CУправление состоянием и реактивностью через inject и provideДинамическое обновление компонентов и данных на VueГлубокое изучение документации Vue и как эффективно её использоватьИспользование Crystal с Vue для разработкиИспользование вычисляемых свойств для динамического отображения данных на Vue jsОптимизация производительности и предупреждения в Vue
Открыть базу знаний

Лучшие курсы по теме

изображение курса

Vue 3 и Pinia

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.9
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

TypeScript с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Next.js - с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий