选项参考
选项放在哪里
module.exports = {
// ...
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
// `vue-loader` options
}
}
]
}
}
loaders
类型:
{ [lang: string]: string | Object | Array }
指定 webpack loader 对象覆盖用于
*.vue
文件内的语言块的默认 loader。如果指定,该键对应于语言块的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
会在默认 loaders 之前处理。你可以用来预处理语言块 - 一个常见用例是用来处理构建时的 i18n。
postLoaders
类型:
{ [lang: string]: string }
配置格式和
loaders
相同,但是postLoaders
会在默认 loaders 之后处理。你可以用来后处理语言块。注意这会有些复杂:对于
html
,默认 loader 返回结果会被编译为 JavaScript 渲染函数。对于
css
,由vue-style-loader
返回的结果通常不太有用。使用 PostCSS 插件将会是更好的选择。
postcss
注意:这里推荐使用 PostCSS 配置文件代替,这样你的
*.vue
文件中的样式和普通的 CSS 样式可以共享相同的配置。用法和postcss-loader
相同。
类型:
Array
orFunction
orObject
指定要应用于
*.vue
文件中 CSS 的自定义 PostCSS 插件。如果使用函数,函数将使用相同的 loader 上下文调用,并返回一个插件数组。// ... { loader: 'vue-loader', options: { // 注意:不要在 `loader` 下嵌入 `postcss` 选项 postcss: [require('postcss-cssnext')()], loaders: { // ... } } }
这个配置选项也可以是一个对象,这在使用依赖于自定义 parser/stringifiers 的项目会非常有用:
postcss: { plugins: [...], // list of plugins options: { parser: sugarss // use sugarss parser } }
postcss.config
13.2.1 新增
- 类型:
Object
默认值:
undefined
这个字段允许用 postcss-loader 同样的方式自定义 PostCSS 插件。
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
是否开启 CSS 的 source maps,关闭可以避免
css-loader
的 some relative path related bugs 同时可以加快构建速度。注意,这个值会在 webpack 配置中没有
devtool
的情况下自动设置为false
。
postcss.cascade
14.2.0 新增
- 类型:
boolean
默认值:
false
设置为
true
的时候会开启层叠式加载 PostCSS 配置文件。比如,你可以在嵌套的源代码目录下放置额外的.postcssrc
文件来为项目中不同的文件应用不同的 PostCSS 配置。
esModule
这个选项已经从 v14.0 中移除。在 v14.0 及以上版本中,
*.vue
文件始终暴露为 ES 模块。
- 类型:
Boolean
默认值:
undefined
是否导出兼容 esModule 的代码,默认情况下 vue-loader 会导出 commonjs 格式,像
module.exports = ....
。当esModule
设置为 true 的情况下,导出会变为exports.__esModule = true; exports = ...
。适用于与 Babel 以外的 transpiler 互操作,比如 TypeScript。
preserveWhitespace
- 类型:
Boolean
默认值:
true
如果设置为
false
,模版中 HTML 标签之间的空格将会被忽略。
compilerModules
- 类型:
Array<ModuleOptions>
默认值:
[]
为
vue-template-compiler
配置modules
选项。相关细节请查阅vue-template-compiler
的modules
选项。
compilerDirectives
- 类型:
{ [tag: string]: Function }
默认值:
{}
(v13.0.5+)版本说明:在 v12.x 中,从 v12.2.3+ 开始支持
为
vue-template-compiler
配置directives
选项。相关细节请查阅vue-template-compiler
的directives
选项。
transformToRequire
- 类型:
{ [tag: string]: string | Array<string> }
默认值:
{ img: 'src', image: 'xlink:href' }
在模版编译过程中,编译器可以将某些属性,如
src
路径,转换为require
调用,以便目标资源可以由 webpack 处理。默认配置会转换<img>
标签上的src
属性和 SVG 的<image>
标签上的xlink:href
属性。
buble
- 类型:
Object
默认值:
{}
配置
buble-loader
的选项 (如果存在),并且 buble 编译传递模板渲染函数。版本警告:在 9.x 版本中,模板表达式通过现在已经删除的
templateBuble
选项单独配置。模板渲染函数编译支持一个特殊的变换
stripWith
(默认启用),它删除生成的渲染函数中的with
用法,使它们兼容严格模式。配置例子:
module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', options: { buble: { // same options } } } ] }
extractCSS
12.0.0 新增
使用 extract-text-webpack-plugin
自动提取 CSS。适用于大多数预处理器,且也可在生产环境进行压缩。
传入的值可以是 true
,也可以是插件的一个实例 (这样可以为多个提取的文件使用多个提取插件的实例)。
这应当只用于生产环境,以便可以在开发过程中使用热重载。
示例:
// 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
默认值: 当 webpack 配置中包含
target: 'node'
且vue-template-compiler
版本号大于等于 2.4.0 时为true
。开启 Vue 2.4 服务端渲染的编译优化之后,渲染函数将会把返回的 vdom 树的一部分编译为字符串,以提升服务端渲染的性能。在一些情况下,你可能想要明确的将其关掉,因为该渲染函数只能用于服务端渲染,而不能用于客户端渲染或测试环境。
hotReload
13.5.0 新增
- 类型:
boolean
- 默认值: 在开发环境下是
true
,在生产环境下或 webpack 配置中有target: 'node'
的时候是false
。 允许的值:
false
(true
会强制热重载,即便是生产环境或target: 'node'
时)是否使用 webpack 的模块热替换在浏览器中应用变更而不重载整个页面。 用这个选项 (值设为
false
) 在开发环境下关闭热重载特性。
threadMode
14.2.0 新增
- 类型:
boolean
默认值:
false
设置为
true
的时候会开启基于文件系统的选项缓存,使得主vue-loader
的选项可以分享给其它线程中的子 loader。只在和 HappyPack 或
thread-loader
配合使用的时候才用得到。