--- 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, то в шаблоне // должен быть <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` для тегов `` и `