---
sidebar: auto
---
# Конфигурация
## Глобальная конфигурация CLI
Некоторые глобальные настройки для `@vue/cli`, такие как предпочитаемый менеджер пакетов и ваши локальные пресеты настроек, сохранены в JSON-файле `.vuerc` в вашем домашнем каталоге. Вы можете использовать любой редактор для изменения этих настроек.
Также можно воспользоваться командой `vue config` для изучения или изменения глобальной конфигурации CLI.
## Целевые браузеры
Подробнее в разделе [совместимость с браузерами](../guide/browser-compatibility.md#browserslist).
## vue.config.js
`vue.config.js` — опциональный файл конфигурации, которую автоматически загружает `@vue/cli-service` если находит его в корневом каталоге вашего проекта (рядом с файлом `package.json`). Вы также можете использовать поле `vue` в `package.json`, но, обратите внимание, в таком случае вы будете ограничены только JSON-совместимыми значениями.
Файл должен экспортировать объект с настройками:
``` js
// vue.config.js
module.exports = {
// настройки...
}
```
### baseUrl
Устаревшая опция, начиная с версии Vue CLI 3.3, используйте вместо неё [`publicPath`](#publicpath).
### publicPath
- Тип: `string`
- По умолчанию: `'/'`
Базовый URL-адрес сборки вашего приложения, по которому оно будет опубликовано (именуемая как `baseUrl` до версии Vue CLI 3.3). Это аналог опции webpack `output.publicPath`, но Vue CLI также использует это значение в других целях, поэтому вы должны **всегда использовать `publicPath` вместо изменения опции `output.publicPath`**.
По умолчанию Vue CLI считает, что публикация будет выполнена в корень домена, например `https://www.my-app.com/`. Если приложение публикуется в подкаталог, то необходимо указать этот путь с помощью этой опции. Например, если приложение будет публиковаться по адресу `https://www.foobar.com/my-app/`, установите `publicPath` в значение `'/my-app/'`.
Значение также может быть пустой строкой (`''`) или относительным путём (`./`), чтобы все ресурсы подключались через относительные пути. Это позволит публиковать сборку в любой публичный каталог, или использовать в окружении файловой системы, например в гибридном приложении Cordova.
::: warning Ограничения относительного publicPath
Относительный `publicPath` имеет некоторые ограничения и его следует избегать если:
- Вы используете маршрутизацию HTML5 `history.pushState`;
- Вы используете опцию `pages` для создания многостраничного приложения (MPA).
:::
Опция может быть полезна и на этапе разработки. Если вы хотите запускать сервер разработки из корня сайта, то можно устанавливать значение по условию:
``` js
module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? '/production-sub-path/'
: '/'
}
```
### outputDir
- Тип: `string`
- По умолчанию: `'dist'`
Каталог, в котором при запуске `vue-cli-service build` будут создаваться файлы сборки для production. Обратите внимание, что этот каталог удаляется каждый раз перед началом сборки (это поведение можно отключить опцией `--no-clean` в команде сборки).
::: tip Совет
Всегда используйте `outputDir` вместо изменения опции webpack `output.path`.
:::
### assetsDir
- Тип: `string`
- По умолчанию: `''`
Каталог (относительно `outputDir`) для хранения сгенерированных статических ресурсов (js, css, img, fonts).
::: tip Совет
`assetsDir` игнорируется при перезаписи опций имени файла (filename) или имени фрагментов (chunkFilename) сгенерированных ресурсов.
:::
### indexPath
- Тип: `string`
- По умолчанию: `'index.html'`
Путь к сгенерированному `index.html` (относительно `outputDir`). Также можно указать абсолютный путь.
### filenameHashing
- Тип: `boolean`
- По умолчанию: `true`
По умолчанию генерируемые статические ресурсы содержат хэши в именах файлов для лучшего управления кэшированием. Однако для этого требуется чтобы индексный HTML автоматически генерировался Vue CLI. Если вы не можете использовать индексный HTML, генерируемый CLI, можно отключить хэширование в именах файлов, установив параметр в значение `false`.
### pages
- Тип: `Object`
- По умолчанию: `undefined`
Сборка приложения в многостраничном режиме (MPA). У каждой «страницы» должна быть соответствующая точка входа (entry) в виде JavaScript-файла. Значением может быть объект, где ключ — имя точки входа, а значение:
- объектом, который определяет свои `entry`, `template`, `filename`, `title` и `chunks` (все опциональные, за исключением `entry`). Любые другие свойства, указанные рядом с ними будут переданы непосредственно в `html-webpack-plugin`, для возможности более тонкой настройки этого плагина;
- или строкой, определяющей свою `entry`.
``` js
module.exports = {
pages: {
index: {
// точка входа для страницы
entry: 'src/index/main.js',
// исходный шаблон
template: 'public/index.html',
// в результате будет dist/index.html
filename: 'index.html',
// когда используется опция title, то
в шаблоне
// должен быть <%= htmlWebpackPlugin.options.title %>
title: 'Index Page',
// все фрагменты, добавляемые на этой странице, по умолчанию
// это извлеченные общий фрагмент и вендорный фрагмент.
chunks: ['chunk-vendors', 'chunk-common', 'index']
},
// когда используется строковый формат точки входа, то
// шаблон будет определяться как `public/subpage.html`,
// а если таковой не будет найден, то `public/index.html`.
// Выходное имя файла будет определено как `subpage.html`.
subpage: 'src/subpage/main.js'
}
}
```
::: tip Совет
При сборке в многостраничном режиме, конфигурация webpack будет содержать разные плагины (будут несколько экземпляров `html-webpack-plugin` и `preload-webpack-plugin`). Чтобы убедиться в корректности, проверяйте конфигурацию командой `vue inspect`, если вы изменяете настройки для этих плагинов.
:::
### lintOnSave
- Тип: `boolean | 'error'`
- По умолчанию: `true`
Выполнять ли линтинг кода при сохранении во время разработки с помощью [eslint-loader](https://github.com/webpack-contrib/eslint-loader). Эта опция действует только когда установлен плагин [`@vue/cli-plugin-eslint`](https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint).
Когда значение `true`, `eslint-loader` показывает ошибки линтинга как предупреждения. По умолчанию предупреждения выводятся в терминал и не останавливают сборку ошибкой.
Чтобы ошибки линтинга отображались в браузере, можно указать `lintOnSave: 'error'`. Тогда `eslint-loader` будет всегда генерировать ошибки. Это также означает, что ошибки линтинга будут останавливать сборку ошибкой.
Кроме того, вы можете настроить отображение в браузере предупреждений и ошибок:
``` js
// vue.config.js
module.exports = {
devServer: {
overlay: {
warnings: true,
errors: true
}
}
}
```
Когда значение `lintOnSave` приводится к `true`, `eslint-loader` будет применяться как в разработке, так и в production. Если вы хотите отключить `eslint-loader` при сборке в production, можете воспользоваться следующей конфигурацией:
``` js
// vue.config.js
module.exports = {
lintOnSave: process.env.NODE_ENV !== 'production'
}
```
### runtimeCompiler
- Тип: `boolean`
- По умолчанию: `false`
Использование сборки Vue которая содержит компилятор шаблонов. Установка значения в `true` позволит вам использовать опцию `template` в компонентах Vue, но дополнительно добавит 10 КБайт кода в ваше приложение.
См. также: [Runtime + Компилятор vs. Runtime-only](https://ru.vuejs.org/v2/guide/installation.html#Runtime-Компилятор-vs-Runtime-only).
### transpileDependencies
- Тип: `Array`
- По умолчанию: `[]`
По умолчанию `babel-loader` игнорирует все файлы из `node_modules`. Если вы хотите явно транспилировать зависимость с помощью Babel, то вы можете перечислить её в этой опции.
### productionSourceMap
- Тип: `boolean`
- По умолчанию: `true`
Установка в `false` может ускорить сборку для production, если не требуются source maps.
### crossorigin
- Тип: `string`
- По умолчанию: `undefined`
Настройка атрибутов `crossorigin` для тегов `` и `