Перечень настроек
Где указывать настройки
// 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-compiler2.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) чтобы отключить горячую замену в режиме разработки.