Перечень настроек
Где указывать настройки
// webpack.config.js
module.exports = {
// ...
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
// настройки vue-loader
}
}
]
}
}
loaders
Тип:
{ [lang: string]: string | Object | Array }
Объект определяющий какие загрузчики webpack переопределят стандартные загрузчики, используемые для обработки секций
*.vue
файлов. Ключ соответствует атрибутуlang
у секции файла, если таковой был указан. Значенияlang
по умолчанию:<template>
:html
<script>
:js
<style>
:css
Например, чтобы использовать
babel-loader
иeslint-loader
для обработки всех секций<script>
:module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', options: { loaders: { js: 'babel-loader!eslint-loader' } } } ] }
Вы также можете использовать синтаксис объектов или массивов (обратите внимание, что параметры должны быть сериализуемы):
module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', options: { loaders: { js: [ { loader: 'cache-loader' }, { loader: 'babel-loader', options: { presets: ['env'] } } ] } } } ] }
preLoaders
Тип:
{ [lang: string]: string }
Конфигурация подобна как и в
loaders
, ноpreLoaders
будут применены к соответствующим секциям перед стандартными загрузчиками. Вы можете использовать это для предварительной обработки секций - например для локализации на этапе сборки.
postLoaders
Тип:
{ [lang: string]: string }
Конфигурация подобна как и в
loaders
, ноpostLoaders
применяются после загрузчиков по умолчанию. Вы можете использовать это для пост-обработки языков. Обратите внимание, что тем не менее всё несколько сложнее:Для
html
, результат возвращаемый стандартным загрузчиком будет скомпилированный в JavaScript код render-функции.Для
css
, результат возвращаемый изvue-style-loader
,что не является особенно полезным в большинстве случаев. Использование postcss-плагина будет лучшим вариантом.
postcss
Примечание: рекомендуется использовать файл конфигурации PostCSS, чтобы ваши стили в файлах vue и обычном CSS могли использовать одну и ту же конфигурацию. Использование аналогично как в
postcss-loader
.
Тип:
Array
илиFunction
илиObject
Определяет список плагинов PostCSS, которые будут применяться к CSS внутри
*.vue
файлов. Если используется функция, то она будет вызвана в контексте того же loader'а и должна возвращать массив плагинов.// ... { loader: 'vue-loader', options: { // примечание: не вкладывайте опции `postcss` внутри `loaders` postcss: [require('postcss-cssnext')()], loaders: { // ... } } }
Эта опция также может быть объектом, который содержит настройки для PostCSS. Это пригодится в проектах с PostCSS, где используются собственные парсеры/сериализаторы:
postcss: { plugins: [...], // список плагинов options: { parser: sugarss // использование парсера sugarss } }
postcss.config
Добавлено в версии 13.2.1
- Тип:
Object
По умолчанию:
undefined
Эта опция позволяет настроить конфигурацию PostCSS, таким же образом как и postcss-loader.
postcss.config.path
Указывает путь (файл или каталог) для загрузки конфигурационного файла PostCSS.
postcss: { config: { path: path.resolve('./src') } }
postcss.config.ctx
Предоставляет контекст для плагинов PostCSS. См. подробнее в документации postcss-loader.
postcss.useConfigFile
Добавлено в версии 13.6.0
- Тип:
boolean
По умолчанию:
true
Установка в значение
false
отключает автозагрузку файла конфигурации postcss.
cssSourceMap
- Тип:
boolean
По умолчанию:
true
Использование source maps для CSS. Отключение этой опции может позволить избежать некоторых багов с относительными путями в
css-loader
и сделать сборку немного быстрее.Обратите внимание, эта опция автоматически устанавливается в
false
при отсутствии опцииdevtool
в файле конфигурации webpack.
esModule
- Тип:
boolean
По умолчанию:
true
(v13.0+)Генерация esModule совместимого кода. По умолчанию vue-loader генерирует модули в формате commonjs
module.exports = ....
. Когда опцияesModule
установлена в true, экспорт по умолчанию (default export) будет преобразован вexports.__esModule = true; exports = ...
. Это может быть полезным для настройки взаимодействия с транспиляторами, отличными от Babel, как например TypeScript.
Примечание: до версии v12.x, значение по умолчанию
false
.
preserveWhitespace
- Тип:
boolean
По умолчанию:
true
При установке в
false
пробельные символы между HTML тегами в шаблонах будут проигнорированы.
compilerModules
- Тип:
Array<ModuleOptions>
По умолчанию:
[]
Настройка опции
modules
дляvue-template-compiler
. См. подробнее в документацииvue-template-compiler
опцияmodules
.
compilerDirectives
- Тип:
{ [tag: string]: Function }
По умолчанию:
{}
(v13.0.5+)Примечание: в версиях v12.x поддержка добавлена с v12.2.3+
Настройка опции
directives
дляvue-template-compiler
. См. подробнее в документацииvue-template-compiler
опцияdirectives
.
transformToRequire
- Тип:
{ [tag: string]: string | Array<string> }
По умолчанию:
{ img: 'src' }
Во время компиляции шаблона, компилятор может преобразовывать определённые атрибуты, такие как
src
в ссылках, в вызовыrequire
, таким образом чтобы файл обрабатывался с помощью webpack. Конфигурация по умолчанию преобразуетsrc
атрибуты внутри тегов<img>
.
buble
- Тип:
Object
По умолчанию:
{}
Настройка параметров для
buble-loader
(если он присутствует), и buble-компиляции для шаблонов рендер-функций.Примечание: в версиях 9.x, выражения шаблонов настраивались отдельно через опцию
templateBuble
, которая удалена в новых версиях.Компиляция шаблонов рендер-функций поддерживает специальное преобразование
stripWith
(включена по умолчанию), которая удаляет использованиеwith
в генерируемых рендер-функциях для соответствия режиму strict.Пример конфигурации:
module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', options: { buble: { // теже настройки } } } ] }
extractCSS
Добавлено в версии 12.0.0
- Тип:
boolean
- По умолчанию:
false
Автоматически извлекает CSS с помощью extract-text-webpack-plugin
. Работает для большинства пре-процессоров из коробки и минифицирует при сборке в production.
Передаваемое значение может быть true
, или экземпляром плагина (так что вы можете использовать несколько экземпляров extract plugin для разных извлекаемых файлов).
Это должно использоваться только в production, чтобы горячая перезагрузка модулей работала в процессе разработки.
Например:
// webpack.config.js
var ExtractTextPlugin = require("extract-text-webpack-plugin")
module.exports = {
// другие настройки...
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
extractCSS: true
}
}
]
},
plugins: [
new ExtractTextPlugin("style.css")
]
}
Или можно передать экземпляр плагина:
// webpack.config.js
var ExtractTextPlugin = require("extract-text-webpack-plugin")
var plugin = new ExtractTextPlugin("style.css")
module.exports = {
// другие настройки...
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
extractCSS: plugin
}
}
]
},
plugins: [
plugin
]
}
optimizeSSR
Добавлено в версии 12.1.1
- Тип:
boolean
- По умолчанию:
true
когда конфигурация webpack имеетtarget: 'node'
и версияvue-template-compiler
2.4.0 или выше.
Включает оптимизацию компиляции в Vue 2.4 SSR, которая компилирует в простые строки часть деревьев vdom возвращаемых render-функциями, что улучшает производительность SSR. В некоторых случаях вам может потребоваться явно отключить оптимизацию, поскольку результирующие render-функции могут быть использованы только для SSR и не могут использоваться для рендеринга на стороне клиента или тестирования.
hotReload
Добавлено в версии 13.5.0
- Тип:
boolean
- По умолчанию:
true
в режиме разработки,false
в режиме production или при установленной опцииtarget: 'node'
в конфигурации webpack. - Разрешённые значения:
false
(true
не заставит работать горячую замену ни в режиме production, ни когдаtarget: 'node'
)
Использование возможности webpack по горячей замене модулей позволяет применять изменения в браузере без необходимости обновления страницы.
Используйте эту опцию (со значением false
) чтобы отключить горячую замену в режиме разработки.