Программирование HTML Vue: создание приложения на TypeScript Thu, March 05 2026  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Vue: создание приложения на TypeScript Печать
Добавил(а) microsin   

Создание приложения TypeScript обычно начинается командой:

npm create vue@latest

В ответ на запрос "Project name (target directory):" введите имя проекта. Будет создана папка с таким именем для проекта.

В ответ на запрос "Select features to include in your project:" выберите пункты "TypeScript", "Linter" и обычно также выбирают "Router".

При создании TypeScript-проекта командой npm create vue@latest визард предлагает выбрать несколько функциональных возможностей для проекта:

Select features to include in your project: (↑/↓ to navigate, space to
select, a to toggle all, enter to confirm)
│  ◻ TypeScript
│  ◻ JSX Support
│  ◻ Router (SPA development)
│  ◻ Pinia (state management)
│  ◻ Vitest (unit testing)
│  ◻ End-to-End Testing
│  ◻ Linter (error prevention)
│  ◻ Prettier (code formatting)

Зачем нужна каждая из этих фич?

Вот подробный обзор каждой опции, которая появляется при создании нового проекта Vue с помощью `npm create vue@latest`:

[TypeScript]

Добавляет поддержку статической типизации.

● Позволяет писать код с типами (`:string`, `:number`, интерфейсы и т.д.).
● Плюсы: лучшая поддержка IDE (автодополнение, рефакторинг), меньше ошибок на этапе выполнения (так как TypeScript проверяет типы еще до запуска кода), самодокументирование кода. Фактически стандарт для крупных и средних проектов.

[JSX Support]

Позволяет использовать синтаксис JSX/TSX.

● JSX — это расширение JavaScript, которое позволяет писать HTML-подобный код прямо в JavaScript/TypeScript файлах (обычно используется в React). Во Vue он нужен, в основном, если вы пишете функциональные компоненты или используете библиотеки, завязанные на рендер-функции.

Обычно в Vue используют шаблоны (Template API) — это стандарт. JSX выбирают разработчики, пришедшие из React, или для более сложных случаев, когда нужно смешивать логику и разметку в одном файле с гибкостью JavaScript.

[Router (SPA development)]

Официальный маршрутизатор для Vue.js (Vue Router). Если вы делаете Single Page Application (SPA), вам нужно менять содержимое страницы без перезагрузки браузера (менять URL и показывать разные страницы/компоненты). Роутер позволяет связывать URL-адреса с конкретными компонентами Vue.

Без него: у вас будет одна страница. С ним — многостраничное приложение с навигацией.

[Pinia (state management)]

Управление глобальным состоянием приложения.

● Хранилище данных, доступное из любого компонента, даже если они не связаны напрямую (родитель-потомок).
● Когда нужна: несколько компонентов используют одни и те же данные (например, данные пользователя, корзина интернет-магазина, настройки темы) и должны реагировать на изменения друг друга. Pinia пришла на смену Vuex.
● Альтернатива: для простых проектов можно обойтись Composables и reactive().

[Vitest (unit testing)]

Фреймворк для модульного (unit) тестирования.

● Позволяет писать тесты, которые проверяют работу отдельных функций, компонентов или модулей в изоляции друг от друга.
● Для чего: чтобы быть уверенным, что изменение кода в одном месте не сломало логику в другом. Запускается быстро, написан специально для Vite (поэтому отлично с ним интегрирован).

[End-to-End Testing]

Сквозное тестирование (E2E).

● Тестирование приложения целиком, имитирующее действия реального пользователя в браузере (клики, заполнение форм, переходы по страницам).
● Инструменты: обычно предлагается выбрать конкретный инструмент (например, Cypress или Playwright).
● Для чего: проверить, что все части системы (фронтенд + бэкенд) работают вместе и пользовательский сценарий выполняется корректно.

[Linter (error prevention)]

Инструмент для анализа кода (ESLint).

● Линтер проверяет код на соответствие правилам. Он находит потенциальные ошибки (например, использование переменной до её объявления) и следит за стилем кода (например, требуя точки с запятой или отступы).
● Для чего: повышение качества кода и предотвращение глупых ошибок еще до запуска приложения.

[Prettier (code formatting)]

Автоматический форматировщик кода.

● Суть: Prettier «переписывает» ваш код, приводя его к единому, заданному стилю (длина строки, кавычки, запятые и т.д.).
● Для чего: чтобы в команде не было споров о том, как оформлять код. Вы просто пишете как хотите, а Prettier (обычно по команде или при сохранении файла) делает код красивым и единообразным.

После завершения создания приложения зайдите в созданный каталог:

cd имя_приложения

Вам будут доступны команды [2]:

npm install
npm run format
npm run dev

1. npm install

Устанавливает зависимости проекта. Технически: читает файл package.json, находит там список всех необходимых пакетов (библиотек) и загружает их из интернета в папку node_modules.

Это первая команда, которую нужно запустить после клонирования проекта или скачивания исходников. Без неё проект не запустится, так как в репозиторий папка `node_modules` обычно не включается (она слишком тяжелая). В результате появляется папка node_modules и файл package-lock.json (фиксирует точные версии).

2. npm run format

Запускает автоматическое форматирование кода. Выполняет скрипт format, который описан в секции "scripts" файла package.json. Обычно этот скрипт вызывает Prettier (если вы выбрали эту опцию при создании проекта).

Цель этой команды: привести весь код в проекте к единому стилю (расставить кавычки, пробелы, переносы строк). Полезно запускать перед коммитом, чтобы код выглядел аккуратно и в пул-реквесте не было лишних правок.

Пример: было `const name="John"`; станет `const name = "John";`.

3. npm run dev

Запускает проект в режиме разработки. Поднимает локальный сервер разработки (на базе Vite). Проект становится доступен в браузере по адресу типа `http://localhost:5173`.

Ключевая особенность (HMR — Hot Module Replacement): команда следит за вашими файлами. Как только вы сохраняете изменения в коде, страница в браузере обновляется мгновенно, без перезагрузки. Вы сразу видите результат правок.

Это основная команда, которая используется в процессе написания кода. Вы её запускаете один раз в начале рабочего дня и оставляете работать.

Опционально можно инициализировать репозиторий Git командой:

git init && git add -A && git commit -m "initial commit"

[Назначение файлов проекта]

.editorconfig — это простой текстовый файл, который нужен для того, чтобы у всех разработчиков в команде (даже если они используют разные редакторы кода — VS Code, Sublime, WebStorm) были одинаковые базовые настройки форматирования.

Это своеобразный «кодекс чести» для редакторов: он говорит твоей IDE, как себя вести с этим конкретным проектом.

Prettier тоже форматирует код, но EditorConfig работает на уровень ниже. Их часто используют в паре:

1. EditorConfig — диктует базовые правила (самые фундаментальные).
2. Prettier — доводит код до идеала по сложным правилам.

В файле EditorConfig прописываются самые важные вещи, которые влияют на читаемость кода и работу систем контроля версий (git):

● Кодировка файлов: обычно `utf-8`.
● Стиль окончания строк: легендарная война пробелов и табуляции. EditorConfig заставляет всех использовать что-то одно (чаще всего пробелы).
● Размер отступа: сколько пробелов в одном отступе (обычно 2).
● Наличие пустой строки в конце файла:** Многие системы требуют, чтобы файл заканчивался пустой строкой.
● Удаление лишних пробелов: автоматически обрезает пробелы в концах строк.

Пример файла .editorconfig:

# Корневой файл (выше не ищем)
root = true

# Правила для всех файлов в проекте
[*]
charset = utf-8
indent_style = space # Использовать пробелы (а не табы)
indent_size = 2 # Один отступ = 2 пробела
end_of_line = lf # Окончания строк в стиле Unix
insert_final_newline = true # Добавлять пустую строку в конце файла
trim_trailing_whitespace = true # Удалять пробелы в концах строк

# Отдельные правила для файлов с расширением .md (например, README)
[*.md]
trim_trailing_whitespace = false # В разметке markdown пробелы иногда важны для форматирования

Как это работает?

1. Файл .editorconfig создается в корне проекта.
2. У редактора (VS Code, WebStorm) должна быть установлена официальная плагин-поддержка EditorConfig (в VS Code он называется "EditorConfig for VS Code").
3. Когда открывается проект, редактор читает этот файл и автоматически применяет настройки.
4. Результат: если разработчик нажимает Tab, а у его коллеги тоже нажимается Tab, и в итоге у обоих в коде появляется ровно 2 пробела, а не смесь из пробелов и табуляции.

Резюме: файл .editorconfig нужен, чтобы обеспечить визуальное единообразие кода на этапе его написания и избежать лишних конфликтов в git (когда весь файл помечается измененным только потому, что у одного разработчика стояли пробелы, а у другого табы).

env.d.ts (или environment.d.ts) — это декларация типов для окружения. Он нужен, чтобы TypeScript понимал, что за штуки используются в коде, но приходят не из JavaScript/TypeScript файлов, а из окружения (обычно из Vite).

Главная задача: обучить TypeScript работать с `import.meta.env`. В современных Vue-проектах на Vite все переменные окружения (например, ключи API, URL серверов) лежат в файле `.env` и доступны в коде через объект `import.meta.env`.

Если ты просто напишешь в коде:

const apiKey = import.meta.env.VITE_API_KEY

... то TypeScript начнет ругаться:

> "Property 'VITE_API_KEY' does not exist on type 'ImportMetaEnv'".

TypeScript не знает, какие именно переменные ты создал в своем `.env` файле. Ему нужно объяснить структуру этого объекта.

Что делает env.d.ts? Этот файл расширяет (дополняет) глобальный тип `ImportMetaEnv`, добавляя в него твои кастомные переменные.

Типичное содержимое env.d.ts в Vue-проекте:

// Типы для импорта CSS-модулей
/// < reference types="vite/client" />

// Раскомментируй и меняй этот блок, чтобы описать свои переменные
// interface ImportMetaEnv {
// readonly VITE_APP_TITLE: string
// readonly VITE_API_BASE_URL: string
// // больше переменных...
// }

interface ImportMeta {
readonly env: ImportMetaEnv }

Что здесь происходит?

1. `/// < reference types="vite/client" />` — подключает стандартные типы Vite. Без этой строки не будет работать `import.meta.env` вообще.

2. `interface ImportMetaEnv { ... }` — здесь ты описываешь свои переменные окружения, которые начинаются с `VITE_` (только они попадают в клиентский код).

3. `interface ImportMeta { ... }` — привязывает описанный выше `ImportMetaEnv` к объекту `import.meta.env`.

Пример пользы. Допустим, у тебя есть файл `.env`:

VITE_API_URL=https://api.example.com
VITE_GOOGLE_MAPS_KEY=abc123

Если ты пропишешь их в env.d.ts:

interface ImportMetaEnv {
readonly VITE_API_URL: string
readonly VITE_GOOGLE_MAPS_KEY: string }

... то при наборе `import.meta.env.` в редакторе VS Code появится автодополнение с этими двумя переменными. И если ты случайно опечатаешься (`import.meta.env.VITE_APL_URL`), TypeScript подсветит ошибку.

Резюме: файл env.d.ts — мостик между твоими текстовыми переменными в `.env` файле и строгой системой типов TypeScript. Он делает переменные окружения типо-безопасными.

eslint.config.ts — это конфигурационный файл для ESLint, написанный на TypeScript. Он появился в экосистеме ESLint относительно недавно и служит для централизованной настройки линтера в проекте.

Этот файл нужен для того, чтобы определить правила, плагины и настройки, по которым ESLint будет анализировать ваш код. Главное преимущество использования TypeScript версии — полная типо-безопасность при написании конфигурации. Вы получаете автодополнение и проверку типов прямо в файле настроек.

[Появление файла eslint.config.ts]

1. Начало (ESLint v9.9.0, август 2024): поддержка TypeScript-конфигов появилась как экспериментальная функция. Чтобы её включить, нужно было использовать специальный флаг `--flag unstable_ts_config` при запуске ESLint, а также устанавливать дополнительную зависимость `jiti` для Node.js.

2. Стабилизация (ESLint v9.18.0, январь 2025): функция стала стабильной. Теперь файлы `eslint.config.ts`, `.mts` и `.cts` можно использовать как обычные конфигурационные файлы без необходимости указывать экспериментальный флаг. Требование устанавливать `jiti` для Node.js сохранилось (для Deno и Bun он не нужен).

[Типичное содержание]

Современный eslint.config.ts обычно использует вспомогательную функцию defineConfig() для обеспечения типо-безопасности и новый механизм extends для удобного подключения сторонних конфигураций.

// eslint.config.ts
import { defineConfig } from "eslint/config";
import js from "@eslint/js";
import tsParser from "@typescript-eslint/parser";
import tsPlugin from "@typescript-eslint/eslint-plugin";

export default defineConfig([
{
files: ["src/**/*.ts"], // Применять правила к TS-файлам в папке src
languageOptions: {
parser: tsParser, // Использовать TypeScript-парсер
parserOptions: {
project: "./tsconfig.json", // Указать путь к tsconfig.json
},
},
plugins: {
"@typescript-eslint": tsPlugin,
},
extends: [
"js/recommended", // Базовые правила ESLint
"plugin:@typescript-eslint/recommended", // Рекомендованные правила для TS
"plugin:@typescript-eslint/recommended-requiring-type-checking", // Правила с проверкой типов
],
rules: {
// Здесь можно переопределить или добавить свои правила
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
"no-console": "warn"
},
},
{
files: ["**/*.test.ts"], // Особые правила для тестов
languageOptions: {
globals: {
describe: "readonly",
it: "readonly",
expect: "readonly"
}
},
rules: {
"no-console": "off" // В тестах можно использовать console
}
} ]);

Что здесь происходит:

defineConfig(): оборачивает конфигурацию для автодополнения.
files: указывает, к каким файлам применять этот блок настроек.
languageOptions.parser: сообщает ESLint, что нужно использовать парсер @typescript-eslint/parser для понимания TypeScript-синтаксиса.
extends: позволяет подключать готовые наборы правил (например, от `@typescript-eslint`), что сильно упрощает конфигурацию.
rules: здесь включаются, отключаются или меняются отдельные правила.

[Преимущества перед JS-конфигом]

● Типизация: автодополнение и проверка типов при написании конфига (благодаря defineConfig).
● Ясность: возможность использовать `extends` делает конфиг более читаемым и похожим на старый формат `.eslintrc`, к которому многие привыкли.
● Удобство: легче управлять сложными настройками с помощью TypeScript-синтаксиса.

Важное примечание: чтобы файл eslint.config.ts работал в Node.js, необходимо установить пакет jiti (или аналогичный, умеющий загружать TypeScript-файлы на лету), так как Node.js по умолчанию не понимает TypeScript.

npm install --save-dev jiti

В средах вроде Deno или Bun дополнительных действий не требуется — они поддерживают TypeScript "из коробки".

Резюме: eslint.config.ts — современный, типо-безопасный способ настройки ESLint, который стал стабильным стандартом. Он позволяет удобно описывать правила для разных частей проекта и подключать готовые конфигурации, делая процесс линтинга прозрачнее и надежнее.

index.html. Файл index.html в корне TypeScript-проекта Vue это единственный HTML-файл всего приложения. В отличие от традиционных веб-сайтов, где каждая страница имеет свой HTML, в SPA (Single Page Application) на Vue используется один входной HTML-файл, а весь остальной интерфейс генерируется JavaScript/TypeScript.

1. Точка входа в приложение

Это единственный HTML-файл, который получает браузер при загрузке сайта. Все остальное (компоненты, страницы, роутер) загружается динамически через JavaScript.

< !DOCTYPE html>
< html lang="en">
  < head>
    < meta charset="UTF-8" />
    < link rel="icon" href="/favicon.ico" />
    < meta name="viewport" content="width=device-width, initial-scale=1.0" />
    < title>Мое Vue приложение< /title>
  < /head>
  < body>
    < div id="app">< /div>
    < script type="module" src="/src/main.ts">< /script>
  < /body>
< /html>

2. Контейнер для Vue-приложения

Внутри < body> есть элемент с `id="app"`. Это точка монтирования — именно сюда Vue будет рендерить всё приложение. Файл main.ts находит этот элемент и "запускает" в него Vue:

// main.ts
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app') // Ищет элемент с id="app" в index.html

3. Особенность Vite — это не статический файл

В проектах на Vite (а `npm create vue@latest` использует Vite) файл index.html обрабатывается особым образом:

● Не является статическим ассетом: он не просто копируется в папку dist. Vite анализирует его, находит теги < script type="module" src="/..."> и обрабатывает указанные в них файлы как исходный код приложения.
● Трансформации во время сборки: Vite может подставлять в index.html значения переменных окружения, хеши для кеширования и выполнять другие оптимизации при сборке проекта.
● Связующее звено: он соединяет инструмент сборки (Vite) с исходным кодом (src/main.ts).

4. Общие метаданные

В этом файле задаются глобальные для всего приложения вещи:

● Заголовок страницы (< title>).
● Мета-теги (описание, Open Graph для соцсетей).
● Подключение внешних ресурсов (шрифты, fav-иконки).
● Стили, которые должны быть загружены до старта приложения.

В конфигурации по умолчанию index.html находится в корне проекта, а не в папке src, потому что:

1. Vite ожидает его именно там — это стандартное поведение.
2. Он служит входной точкой для сборки — на него ориентируются dev-сервер и процесс билда.
3. Разделение ответственности: src/ содержит исходный код приложения (компоненты, логику), а корневой index.html — это "обертка" для этого кода.

[TypeScript и index.html]

Хотя сам файл — это HTML, TypeScript косвенно с ним взаимодействует:

● В main.ts (который TypeScript-файл) происходит обращение к DOM-элементу из index.html (#app).
● TypeScript проверяет, что такой элемент существует и что метод mount() вызывается корректно.
● Если вы используете переменные окружения в HTML (через Vite), TypeScript не проверяет их напрямую, но может участвовать в их генерации через env.d.ts.

Резюме: index.html в Vue-проекте на TypeScript — это:

1. Физическая оболочка приложения (единственная HTML-страница).
2. Место для глобальных метаданных (title, meta-теги).
3. Точка монтирования Vue через < div id="app">.
4. Входная дверь для Vite — через тег < script> он понимает, с какого TypeScript-файла начинать сборку.

.oxlintrc.json. Файл .oxlintrc.json это конфигурационный файл для Oxlint, современного линтера для JavaScript и TypeScript, написанного на Rust.

Если кратко — это аналог конфигурации ESLint, но для "супербыстрого линтера". Он позволяет настроить правила проверки кода под нужды вашего проекта.

Прежде чем разбирать файл, важно понять, что это за инструмент. Oxlint — это линтер от создателей Vue (VoidZero), который:

- Работает в 50-100 раз быстрее ESLint (написан на Rust).
- Поддерживает более 500 правил "из коробки" (ESLint core + популярные плагины: TypeScript, React, Unicorn, Jest, Import и др.).
- Не требует сложной настройки для начала работы.

Файл .oxlintrc.json позволяет кастомизировать поведение Oxlint под ваш проект. Вот что можно настраивать:

1. Правила (Rules)

Вы можете включать/отключать конкретные правила и задавать их строгость:

{
"rules": {
"no-console": "warn", // Предупреждать о console.log
"eqeqeq": "error", // Требовать строгое равенство (===)
"no-plusplus": ["error", { "allowForLoopAfterthoughts": true }] // Правило с опциями
} }

2. Категории правил

Можно включать целые группы правил одной строкой:

- correctness — код, который точно неправильный (включено по умолчанию).
- suspicious — подозрительный код.
- pedantic — очень строгие правила (могут давать ложные срабатывания).
- style — правила оформления кода.
- perf — правила производительности.
- restriction — запрет определенных паттернов.

{
"categories": {
"correctness": "error",
"suspicious": "warn",
"pedantic": "off"
} }

3. Плагины

Oxlint включает множество плагинов "из коробки" (TypeScript, React, Unicorn, Jest и др.). Вы можете явно указать, какие использовать:

{
"plugins": ["unicorn", "typescript", "oxc", "react", "import"] }

4. Игнорирование файлов

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

{
"ignorePatterns": ["dist/**", "coverage/**", "vendor/**", "**/*.min.js"] }

5. Окружение и глобальные переменные

Можно указать, для какого окружения пишется код, чтобы линтер знал о глобальных переменных:

{
"env": {
"browser": true,
"node": true,
"es2021": true
},
"globals": {
"MY_GLOBAL": "readonly",
"Promise": "off" } }

6. Переопределения для разных типов файлов

Например, для тестов можно ослабить правила:

{
"overrides": [
{
"files": ["**/*.test.ts", "**/*.spec.ts"],
"rules": {
"no-console": "off",
"@typescript-eslint/no-explicit-any": "off"
}
}
] }

7. Наследование конфигураций

В моно-репозиториях можно создать базовый конфиг в корне и расширять его в пакетах:

{
"extends": [".oxlintrc.json", "./configs/typescript.json"] }

Как это работает в проекте:

1. Создание: `npx oxlint --init` создаст базовый .oxlintrc.json.
2. Поиск конфига: Oxlint автоматически ищет файл в текущей директории.
3. Вложенные конфиги: если в подпапке есть свой .oxlintrc.json, он будет использован для файлов в этой папке.
4. Запуск: `npx oxlint` проверит код по вашим правилам.

[Отношение к TypeScript-проекту Vue]

В вашем Vue-проекте на TypeScript этот файл может:

- Проверять TypeScript-файлы через плагин "typescript".
- Игнорировать сборки (dist/).
- Иметь особые правила для тестов (vitest поддерживается).
- При необходимости работать вместе с ESLint (через плагин eslint-plugin-oxlint).

Важное отличие от eslint.config.ts:

Файл Инструмент Язык Скорость Типизация конфига
eslint.config.ts ESLint JavaScript/TS (медленнее) Медленнее Да (TypeScript)
.oxlintrc.json Oxlint (Rust) JSON (без выполнения) 50-100x быстрее JSON Schema (`$schema`)

Oxlint также поддерживает oxlint.config.ts, но он требует Node.js-окружения, а .oxlintrc.json работает с бинарной версией.

Резюме: .oxlintrc.json это ваш пульт управления для "молниеносного линтера". Он позволяет точечно настроить проверку кода, игнорировать ненужные файлы и поддерживать консистентность кода во всем проекте, экономя минуты (а в сумме — часы) ожидания на CI и в pre-commit хуках.

package.json. Файл package.json — это сердце любого Node.js/JavaScript/TypeScript проекта, включая Vue-приложения. Он содержит метаданные о проекте, список зависимостей и доступные команды (скрипты).

В TypeScript-проекте Vue этот файл играет ключевую роль, связывая все инструменты воедино: TypeScript, Vite, Vue, линтеры и тестовые фреймворки.

[Основные секции package.json]

1. Метаданные проекта

{
"name": "my-vue-app",
"version": "0.1.0",
"private": true,
"description": "Мое замечательное Vue-приложение",
"author": "Имя Разработчика",
"license": "MIT" }

name — имя проекта (важно для публикации, но для приложения просто идентификатор).
version — текущая версия (по семантическому версионированию).
private — запрещает случайную публикацию в npm-реестр.

2. Скрипты (самое важное для разработки)

{
"scripts": {
"dev": "vite",
"build": "vue-tsc -b && vite build",
"preview": "vite preview",
"lint": "eslint .",
"format": "prettier --write src/"
} }

Это команды, которые можно запускать через `npm run`. Каждая строчка — это ярлык для длинной команды:

npm run dev — запускает dev-сервер Vite.
npm run build — сначала проверяет типы TypeScript (vue-tsc), затем собирает проект.
npm run lint — запускает ESLint для проверки кода.
npm run format — запускает Prettier для форматирования.

3. Зависимости (dependencies)

{
"dependencies": {
"vue": "^3.5.0",
"vue-router": "^4.4.0",
"pinia": "^2.2.0"
} }

Здесь перечислены библиотеки, необходимые для работы приложения в публикации:

vue — ядро фреймворка.
vue-router — маршрутизация (если выбрана).
pinia — управление состоянием (если выбрана).

4. Зависимости для разработки (devDependencies)

{
"devDependencies": {
"typescript": "~5.4.0",
"vite": "^5.3.0",
"@vitejs/plugin-vue": "^5.0.0",
"vue-tsc": "^2.0.0",
"eslint": "^9.0.0",
"prettier": "^3.2.0",
"@types/node": "^20.0.0"
} }

Инструменты, которые нужны только во время разработки:

typescript — сам TypeScript.
vite — сборщик и dev-сервер.
@vitejs/plugin-vue — плагин для поддержки Vue-файлов в Vite.
vue-tsc — проверка типов в Vue-компонентах.
eslint/prettier — линтер и форматтер.
@types/node — типы для Node.js (нужны для конфигурационных файлов).

5. Пакетный менеджер

{
"packageManager": "pnpm@8.15.0" }

Указывает, какой именно пакетный менеджер используется и его версию (опционально).

[Как это работает вместе]

Когда вы создаете проект через `npm create vue@latest`, система:

1. Генерирует package.json с выбранными вами опциями.
2. Добавляет зависимости в зависимости от того, что вы отметили (TypeScript, Router, Pinia, Vitest и т.д.).
3. Прописывает скрипты для всех инструментов.
4. Создает файлы конфигурации (tsconfig.json, vite.config.ts, eslint.config.ts), которые эти зависимости используют.

Взаимосвязь с TypeScript. В TypeScript-проекте package.json особенно важен, потому что он:

● Указывает версию TypeScript (typescript в devDependencies).
● Определяет скрипт build, который включает проверку типов (vue-tsc).
● Содержит зависимости для типизации (`@types/...` пакеты).

[Типичный цикл разработки]

1. Клонировали проект:

git clone ...
cd проект

2. Установили зависимости (npm читает package.json):

npm install

3. Запустили разработку (npm читает scripts):

npm run dev

4. Проверили код:

npm run lint

5. Собрали для публикации:

npm run build

Резюме: package.json это манифест проекта, который:

1. Описывает проект (имя, версия, автор).
2. Управляет зависимостями (кто нужен для работы и разработки).
3. Хранит скрипты-команды (как запускать, собирать, проверять).
4. Обеспечивает воспроизводимость — по нему команда `npm install` всегда поставит правильные версии пакетов.
5. Связывает все инструменты в единую экосистему разработки.

package-lock.json. Это автоматически генерируемый файл, который фиксирует точные версии всех установленных зависимостей (включая вложенные зависимости ваших зависимостей).

Если package.json это список того, что нужно установить (часто с версиями вроде `^1.2.0` — "любая совместимая версия выше 1.2.0"), то package-lock.json это детальный отчет о том, что именно установилось.

1. Гарантия идентичности окружений

Главная задача — чтобы у всех разработчиков в команде и на сервере (CI/CD, публикация) были абсолютно одинаковые версии всех пакетов.

Без lock-файла:

1. Ты установил проект → получил версию 1.2.0 пакета Vue.
2. Твой коллега установил проект через неделю → получил версию 1.3.0 (потому что вышло обновление).
3. У коллеги всё работает, у тебя — нет. Или наоборот.
4. Результат: "На моей машине работает" (но не работает на сервере).

C lock-файлом `npm install` читает package-lock.json и ставит те же версии, которые были у тебя.

2. Ускорение установки

Файл содержит уже готовое дерево зависимостей. npm не нужно вычислять, какие версии каких пакетов совместимы друг с другом — он просто читает готовую структуру из lock-файла и скачивает то, что там указано.

Что внутри? Файл package-lock.json это огромный JSON, который описывает полное дерево зависимостей:

{
"name": "my-vue-app",
"version": "0.1.0",
"lockfileVersion": 3,
"packages": {
"node_modules/vue": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.0.tgz",
"integrity": "sha512...",
"dependencies": {
"@vue/compiler-dom": "3.5.0",
"@vue/runtime-dom": "3.5.0"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.0",
"resolved": "...",
"integrity": "..."
}
// ... и так для каждой библиотеки, включая их зависимости
} }

Для каждого пакета указано:

● Точная версия.
● URL, откуда скачан.
● Хеш (контрольная сумма) для проверки целостности.
● Свои зависимости (которые тоже зафиксированы).

Взаимодействие с package.json:

Файл Кто создает Что содержит Когда меняется
package.json Разработчик Список зависимостей с диапазонами версий (`^1.2.0`) При ручном добавлении/удалении пакетов
package-lock.json npm Точные версии всех пакетов При любой установке, обновлении или удалении пакетов

Важные правила работы:

1. Нужно коммитить в Git. Файл package-lock.json обязательно должен быть в репозитории. Это не "мусорный" файл, а важная часть проекта.
2. Не нужно редактировать вручную. Этот файл генерируется автоматически. Любые правки вручную будут перезаписаны при следующей установке.

Когда обновляется:

1. При добавлении нового пакета: `npm install axios`.
2. При обновлении пакетов: `npm update`.
3. При удалении пакета: `npm uninstall axios`.
4. При ручном изменении версий в package.json.

[В контексте TypeScript и Vue]

Для TypeScript-проекта Vue файл package-lock.json особенно важен, потому что влияют факторы:

● Типизация — многие `@types/...` пакеты должны быть строго совместимы с основными пакетами. Lock-файл гарантирует эту совместимость.
● Инструменты сборки — Vite, плагины и транспиляторы должны быть тех же версий, что и у команды.
● Воспроизводимые сборки — публикуемый билд на CI-сервере будет собран с теми же версиями, что и локально у разработчика.

Чем package-lock.json отличается от других lock-файлов:

Пакетный менеджер Lock-файл
npm package-lock.json
yarn yarn.lock
pnpm pnpm-lock.yaml

Все они выполняют одну функцию, но в разных форматах.

[Частые вопросы]

Q: Что делать, если в lock-файле конфликт при merge?
A: Удалить lock-файл, выполнить `npm install` заново и закоммитить новый. Но лучше разрешать конфликты вручную, если вы понимаете, какие версии должны остаться.

Q: Можно ли удалить lock-файл?
A: Технически да, он пересоздастся. Но тогда все получат разные версии пакетов, что приведет к проблемам. Удалять не рекомендуется.

Q: Почему lock-файл такой огромный?
A: Он содержит полное дерево всех зависимостей, включая то, от чего зависят ваши зависимости. В большом проекте это могут быть сотни и тысячи пакетов.

Резюме: package-lock.json это страховочная сетка вашего проекта:

1. Фиксирует точные версии всех пакетов.
2. Гарантирует одинаковое окружение у всех разработчиков и на сервере.
3. Ускоряет установку зависимостей.
4. Обязателен для коммита в репозиторий.
5. Никогда не редактируется вручную.

.prettierrc.json. Файл .prettierrc.json это конфигурационный файл для Prettier, который является инструментом для автоматического форматирования кода. В контексте TypeScript-проекта Vue он играет ключевую роль в поддержании единого стиля кода.

Prettier (в переводе с английского — "красивее", "более красивый") — это "самомнительный" форматтер кода, который навязывает единый стиль оформления . Он автоматически переписывает ваш код, приводя его к заданным правилам форматирования.

В TypeScript-проекте Vue этот файл нужен для того, чтобы:

- Автоматически форматировать код при сохранении или по команде.
- Обеспечить единообразие стиля у всех разработчиков в команде.
- Избавиться от споров о том, где ставить запятые, кавычки или пробелы.
- Сократить время код-ревью — ревьюеры не отвлекаются на форматирование.

[Что можно настроить]

В файле .prettierrc.json вы определяете правила форматирования. Вот типичный набор настроек для Vue + TypeScript проекта:

{
"semi": false, // Не ставить точки с запятой в конце строк
"singleQuote": true, // Использовать одинарные кавычки
"tabWidth": 2, // Размер отступа = 2 пробела
"useTabs": false, // Использовать пробелы, а не табуляцию
"printWidth": 100, // Максимальная длина строки
"trailingComma": "all", // Добавлять запятые в конце везде, где можно
"arrowParens": "avoid", // Избегать скобок у стрелочных функций с одним параметром
"vueIndentScriptAndStyle": true, // Отступы в < script> и < style> блоках Vue
"htmlWhitespaceSensitivity": "ignore", // Чувствительность к пробелам в HTML
"endOfLine": "auto" // Автоопределение окончаний строк }

Популярные опции:

Опция Назначение Примеры значений
semi Точки с запятой в конце true / false
singleQuote Одинарные/двойные кавычки true (одинарные) / false (двойные)
tabWidth Размер отступа 2, 4
printWidth Максимальная длина строки 80, 100, 120
trailingComma Запятые в конце "none", "es5", "all"
arrowParens Скобки у стрелочных функций "always", "avoid"

[Как это работает в проекте]

1. Файл конфигурации

Файл .prettierrc.json помещается в корень проекта (рядом с package.json). Prettier автоматически найдет его и будет использовать эти правила.

2. Альтернативные форматы

Prettier поддерживает множество форматов конфигурации:

- .prettierrc (JSON/YAML).
- .prettierrc.js, .prettierrc.ts (с поддержкой TypeScript).
- prettier.config.js.
- Секция "prettier" в package.json.
- .prettierrc.toml.

TypeScript-версия требует Node.js `>=22.6.0` и специальных флагов.

3. Игнорирование файлов

Вместе с конфигом часто создают файл .prettierignore`, чтобы исключить ненужные файлы:

node_modules
dist
*.md
*.json

4. Интеграция с редактором

VS Code с расширением Prettier может форматировать файлы автоматически при сохранении:

// .vscode/settings.json
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true, "[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
} }

5. Скрипты в package.json

Обычно добавляют команды для форматирования:

{
"scripts": {
"format": "prettier --write .",
"format:check": "prettier --check ."
} }

npm run format — отформатировать все файлы.
npm run format:check — проверить форматирование (полезно для CI).

[Связь с другими инструментами]

EditorConfig. Prettier уважает .editorconfig и может автоматически преобразовывать его настройки. Если в проекте есть .editorconfig, то Prettier прочитает оттуда базовые параметры (отступы, кодировку), но более специфичные настройки возьмет из .prettierrc.json.

ESLint. Prettier и ESLint часто работают в паре:

- Prettier отвечает за форматирование (кавычки, запятые, отступы).
- ESLint отвечает за качество кода (неиспользуемые переменные, потенциальные ошибки).

Чтобы они не конфликтовали, устанавливают eslint-config-prettier и eslint-plugin-prettier. Это отключает правила ESLint, которые пересекаются с форматированием Prettier.

[Пример работы]

Было (не отформатировано):

const user={
name:"John",
age:30,
city:"New York"
}

Стало (после Prettier с настройками выше):

const user = {
name: 'John',
age: 30,
city: 'New York' }

Преимущества для TypeScript + Vue проекта:

1. Поддержка Vue-файлов — Prettier отлично форматирует однофайловые компоненты (`.vue`), включая секции < template>, < script> и < style>.
2. TypeScript-дружелюбность — понимает все синтаксические конструкции TypeScript.
3. Консистентность — весь код в проекте выглядит так, будто написан одним человеком.
4. Автоматизация — не нужно думать о форматировании, оно происходит автоматически.

Резюме: .prettierrc.json это ваш пульт управления стилем кода. Он гарантирует, что независимо от того, кто пишет код — новичок в команде или опытный разработчик — результат будет выглядеть единообразно. В TypeScript-проекте Vue он особенно важен из-за смеси разных синтаксисов (TS, HTML, CSS) в одном файле, и помогает поддерживать чистоту и читаемость кодовой базы.

tsconfig.json - это конфигурационный файл TypeScript (управление компилятором TypeScript). Он указывает TypeScript, как работать с вашим кодом: какие файлы компилировать, в какую версию JavaScript преобразовывать код и насколько строго проверять типы.

1. Управление строгостью проверок

Самое важное для разработчика — настройки "strict". Они включают целый набор правил, которые заставляют писать более надежный код.

"strict": true — включает максимальный режим проверок (рекомендуется). Заставляет, например, обрабатывать null и undefined.
"noImplicitAny": true — запрещает TypeScript угадывать тип как any (любой), если вы его не указали. Заставляет явно прописывать типы.

2. Настройка модулей и версии JavaScript

"target" — в какую версию JS превращать код (например, ES2020). Если вы пишете на современном TS, для старых браузеров можно указать ES5, и компилятор перепишет код с использованием устаревших конструкций, понятных везде.
"module" — какую систему модулей использовать (CommonJS для Node.js или ESNext для современного фронтенда).

3. Указание, что компилировать

"include" — какие папки и файлы нужно обрабатывать (например, `src/**/*` — всё внутри папки src).
"exclude" — что игнорировать (обычно node_modules).

4. Настройка путей (алиасов)

Позволяет настроить удобные пути для импортов, чтобы не писать длинные относительные пути.

Пример: вместо `components/Button` можно писать `@/components/Button`, если в файле прописано:

    "paths": {
"@/*": ["./src/*"]
}

[Типичный пример для Vue-проекта]

При создании проекта командой npm create vue@latest с опцией TypeScript файл tsconfig.json будет выглядеть примерно так:

{
"files": [],
"references": [
{
"path": "./tsconfig.node.json" // Настройки для Node.js (vite.config)
},
{
"path": "./tsconfig.app.json" // Настройки для вашего кода (src/)
}
] }

Часто конфиг разбивают на два, потому что код для браузера и код конфигурации (Vite) работают в разных окружениях.

tsconfig.app.json. Это специализированный конфигурационный файл TypeScript, который создается автоматически при генерации нового Vue-проекта с поддержкой TypeScript (например, через npm create vue@latest). Его основное назначение — управление компиляцией и проверкой типов для кода вашего приложения, то есть для файлов, которые будут выполняться в браузере .

В современной архитектуре Vue + TypeScript принято разделять конфигурацию на несколько файлов для разных сред исполнения. Файл tsconfig.app.json отвечает именно за вашу frontend-часть.

1. Настройка компиляции для браузерного окружения

Файл расширяет (extends) базовую конфигурацию Vue для DOM-окружения — `@vue/tsconfig/tsconfig.dom.json`. Это автоматически добавляет правильные настройки `lib` (включая `dom`), обеспечивая корректную работу TypeScript с браузерными API (например, `document`, `window`).

2. Определение области видимости (какие файлы обрабатывать)

Секция "include" указывает TypeScript, какие файлы проекта относятся к приложению и должны проверяться:

● Все файлы в папке src (`src/**/*`).
● Все Vue-компоненты (`src/**/*.vue`).
● Файл глобальных деклараций окружения (env.d.ts).

Секция "exclude" обычно исключает тесты (`src/**/__tests__/*`), чтобы они не попадали в основную сборку.

3. Настройка путей (алиасов)

В этом файле прописывается популярная конфигурация для использования символа `@` как ссылки на папку src:

"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
} }

Благодаря этому, вместо длинных импортов вроде `components/Button` вы можете писать `@/components/Button`, и TypeScript будет понимать, что это значит.

4. Ускорение сборки (инкрементальная компиляция)

Опция `"composite": true` и настройка "tsBuildInfoFile" включают режим Project References, который позволяет TypeScript кэшировать результаты предыдущей компиляции и пересобирать только изменившиеся файлы. Информационный файл сохраняется во временную папку (./node_modules/.tmp/), не засоряя корень проекта.

5. Управление строгостью проверок

Здесь задаются правила для качества кода именно в приложении:

"strict": true — включает максимальный режим проверки типов.
"noUnusedLocals": true — запрещает неиспользуемые переменные.
"noUnusedParameters": true — запрещает неиспользуемые параметры функций.

[Как это связано с другими tsconfig-файлами?]

В проекте обычно есть три связанных конфигурационных файла:

Файл Назначение
tsconfig.json Главный файл-диспетчер. Он не содержит своих правил, а только ссылается (references) на другие конфиги.
tsconfig.app.json Настройки для вашего кода (то, что пойдет в браузер).
tsconfig.node.json Настройки для инструментов разработки, работающих в Node.js — например, для vite.config.ts.

Резюме: tsconfig.app.json это "личный кабинет" вашего Vue-приложения. Он говорит TypeScript:

1. Где лежит код приложения (папка src).
2. Как его проверять (строгие правила).
3. Как упрощать импорты (через алиас `@`).
4. Как ускорить работу (инкрементальная сборка).
5. Что код будет работать в браузере, а не в Node.js.

Без него TypeScript не знал бы, как обрабатывать `.vue` файлы и на какие типы (браузерные или node.js) ориентироваться.

tsconfig.node.json. Это конфигурационный файл TypeScript, предназначенный специально для кода, который выполняется в среде Node.js, а не в браузере. В Vue-проектах он используется для настройки TypeScript для инструментов сборки и конфигурационных файлов.

1. Настройка для Node.js окружения

В отличие от tsconfig.app.json, который настроен для браузера (с DOM-типами), tsconfig.node.json конфигурирует TypeScript для работы в Node.js среде. Это означает:

- Использование типов Node.js (через `@types/node`).
- Другие настройки модулей (CommonJS или ESNext в зависимости от версии).
- Отсутствие браузерных API (document, window).

2. Обработка конфигурационных файлов

Этот файл нужен для TypeScript-проверки файлов, которые не попадают в браузер, а используются только во время разработки и сборки:

- vite.config.ts — конфигурация Vite.
- vitest.config.ts — конфигурация тестов (если выбраны).
- cypress.config.ts — конфигурация E2E-тестов.
- Другие конфигурационные файлы в корне проекта.

3. Project References

Вместе с tsconfig.app.json и корневым tsconfig.json участвует в системе Project References языка TypeScript, что позволяет:

- Разделить код на независимые части.
- Ускорить компиляцию (инкрементальная сборка).
- Изолировать настройки для разных сред исполнения.

Типичное содержимое:

{
"extends": "@tsconfig/node22/tsconfig.json", // Базовая конфигурация для Node.js 22
"include": [
"vite.config.*",
"vitest.config.*",
"cypress.config.*",
"nightwatch.conf.*",
"playwright.config.*"
],
"compilerOptions": {
"composite": true, // Для Project References
"noEmit": true, // Не генерировать выходные файлы
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", // Кэш
"module": "ESNext", // Использовать ES-модули
"moduleResolution": "Bundler", // Современное разрешение модулей (для Vite)
"types": ["node"] // Подключить типы Node.js
} }

[Ключевые особенности]

Базовая конфигурация. Обычно расширяет (`extends`) готовый конфиг от `@tsconfig/nodeXX` (где XX — версия Node.js), что гарантирует правильные настройки для вашей версии Node.js.

Отсутствие Vue-компонентов. В `include` **нет** `src/**/*.vue` — это важно, потому что Vue-компоненты не должны обрабатываться как Node.js-код.

Типы. В `compilerOptions.types` обычно указан `["node"]`, что подключает глобальные типы Node.js (процессы, файловая система, пути).

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

1. Браузер — ваш Vue-код в src/ (имеет доступ к DOM, не имеет доступа к файловой системе).
2. Node.js — конфигурационные файлы (имеют доступ к файловой системе, не имеют доступа к DOM).

Если использовать один tsconfig.json для всего, то TypeScript будет путаться — либо не найдет типы Node.js, либо будет ругаться на использование Node.js-специфичных функций в браузерном коде.

Решение:

tsconfig.app.json — для браузерного кода (с DOM-типами).
tsconfig.node.json — для Node.js кода (с Node.js-типами).
tsconfig.json — корневой файл, который связывает их через `references`.

[Взаимосвязь с другими файлами]

// tsconfig.json
{
"files": [],
"references": [
{ "path": "./tsconfig.node.json" }, // Ссылка на Node.js конфиг
{ "path": "./tsconfig.app.json" } // Ссылка на браузерный конфиг
] }

Такая структура позволяет запускать `tsc --build` (или `vue-tsc -b`) и проверять оба набора файлов одной командой.

Важные отличия от tsconfig.app.json:

Характеристика tsconfig.app.json tsconfig.node.json
Целевая среда Браузер Node.js
Типы DOM, Vue Node.js
Что включает `src/**/*`, `*.vue` `vite.config.*`, конфиги
Модули ESNext (для браузера) ESNext или CommonJS
Где используется Код приложения Инструменты сборки

[Практическое применение]

Благодаря tsconfig.node.json:

1. Vite config получает правильную типизацию — вы видите автодополнение для `defineConfig`.
2. Переменные окружения в конфигах типизированы правильно.
3. Разделение ответственности — понятно, какой код для какой среды.
4. Ускорение проверок — можно проверять только нужную часть проекта.

Типичный сценарий использования. Проверить типы во всем проекте (и в приложении, и в конфигах):

npm run build # обычно запускает vue-tsc -b

Или отдельно:

npx vue-tsc -b tsconfig.app.json  # только приложение
npx vue-tsc -b tsconfig.node.json # только конфиги

Резюме: tsconfig.node.json это конфигурация TypeScript для инструментов разработки. Он обеспечивает корректную проверку типов в файлах конфигурации (Vite, Vitest и др.), которые работают в Node.js, а не в браузере. Без него TypeScript не знал бы, как правильно обрабатывать vite.config.ts, и не понимал бы Node.js-специфичные API в этих файлах.

vite.config.ts. Файл vite.config.ts — это конфигурационный файл для Vite (современного инструмента сборки и сервера разработки), написанный на TypeScript. В Vue-проекте он является центральным узлом, связывающим все инструменты и настройки воедино.

1. Конфигурация сервера разработки

Vite предоставляет быстрый dev-сервер с горячей заменой модулей (HMR). В конфиге можно настроить:

- Порт и хост (`port: 3000`, `host: true`).
- Прокси для API (чтобы избежать CORS при разработке).
- HTTPS для локальной разработки.

export default defineConfig({
server: {
port: 3000,
proxy: {
'/api': 'http://localhost:8080'
}
} })

2. Настройка сборки (build)

Определяет, как проект будет собираться для публикации:

- Выходная папка (обычно dist).
- Минификация кода.
- Разделение кода на чанки (code splitting).
- Поддержка старых браузеров (target).

3. Подключение плагинов

Самое важное — через vite.config.ts подключаются плагины, которые добавляют функциональность:

import vue from '@vitejs/plugin-vue' // Поддержка Vue-файлов
import vueJsx from '@vitejs/plugin-vue-jsx' // Поддержка JSX/TSX

export default defineConfig({
plugins: [
vue(), // Включает поддержку .vue файлов
vueJsx() // Включает поддержку JSX (если выбрали при создании)
] })

4. Настройка алиасов (путей)

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

import path from 'path'

export default defineConfig({
resolve: {
alias: {
'@': path.resolve(__dirname, './src') // @ указывает на папку src
}
} })

5. Переменные окружения

Определяет, как обрабатывать переменные из `.env` файлов и какие из них доступны в клиентском коде (только с префиксом VITE_).

[Типичное содержимое для Vue + TypeScript проекта]

import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(), // Поддержка Vue SFC
vueJsx() // Поддержка JSX/TSX (опционально)
],
resolve: {
alias: {
// Настройка алиаса @ для указания на папку src
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
server: {
port: 5173, // Порт dev-сервера
open: true // Автоматически открывать браузер
},
build: {
target: 'esnext', // Целевая версия JavaScript
minify: 'esbuild', // Инструмент для минификации
sourcemap: true // Генерировать sourcemaps для отладки
} })

Почему именно TypeScript? Использование vite.config.ts (вместо `.js`) дает важные преимущества:

1. Автодополнение — благодаря `defineConfig` и типам Vite вы получаете подсказки по всем опциям прямо в редакторе.
2. Проверка типов — TypeScript проверит, что вы не допустили ошибку в названии опции или значении.
3. Документация — наведение мыши показывает описания опций.
4. Безопасность — меньше шансов опечататься в конфиге.

Взаимосвязь с другими файлами:

1. Связь с tsconfig.node.json: поскольку vite.config.ts выполняется в Node.js, а не в браузере, он обрабатывается через tsconfig.node.json, который подключает типы Node.js и правильные настройки модулей.
2. Связь с index.html: Vite использует index.html как входную точку. В конфиге можно настроить, как обрабатывать этот HTML-файл.
3. Связь с env.d.ts: переменные окружения, которые вы используете в vite.config.ts, типизируются через env.d.ts.

Основные возможности, настраиваемые в vite.config.ts:

Категория Что можно настроить Пример
Dev-сервер Порт, прокси, HTTPS, CORS server.proxy: { '/api': '...' }
Сборка Выходная папка, чанки, минификация build.rollupOptions.input
Плагины Vue, JSX, ESLint, компоненты plugins: [vue()]
Алиасы Сокращения для путей resolve.alias: { '@': '/src' }
CSS Preprocessors, PostCSS, модули css.preprocessorOptions
Оптимизация Зависимости для предварительной сборки optimizeDeps.include

[Типичные сценарии использования]

Настройка прокси для API:

server: {
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
} }

Поддержка старых браузеров:

build: {
target: ['es2015', 'chrome52'], // Поддержка более старых браузеров }

Настройка глобальных переменных:

define: {
__APP_VERSION__: JSON.stringify('1.0.0') }

Резюме: vite.config.ts это пульт управления всем процессом разработки и сборки. Он выполняет следующее:

1. Настраивает dev-сервер для комфортной разработки.
2. Подключает плагины (Vue, JSX, и т.д.).
3. Определяет правила сборки для публикации.
4. Задает алиасы для удобных импортов.
5. Управляет переменными окружения.
6. Связывает TypeScript с инструментами сборки.

Без этого файла Vite не знал бы, что ваш проект использует Vue, как обрабатывать `.vue` файлы и куда складывать собранный код.

[Ссылки]

1. Vue 3, быстрый старт.
2. Введение в npm.

 

Добавить комментарий


Защитный код
Обновить

Top of Page