webpack配置報錯,先說一下發(fā)生了什么:vue-loader v15 版本新特性,不向后兼容久脯。
以前:vue-loader直接用谆扎;
現(xiàn)在:Vue Loader v15 因為新功能策略的原因必須要一個伴隨插件锋八;
別著急浙于,vue loader v15 已經將插件內置了,所以不用費力氣去找了挟纱。
使用方法:
// webpack.config.js
const VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {
// ...
plugins: [
new VueLoaderPlugin()
]
}
你已經知道怎么做了羞酗,可以就此離開。但如果你還有疑問紊服,接下來是就是為你準備的:
疑問1:我加載了一個vue-loader檀轨,本來直接用就完事了,現(xiàn)在又要從vue-loader中整出個插件欺嗤,再用一遍参萄,這不是增加游戲難度嗎?這是負優(yōu)化煎饼!我抗議讹挎!
解釋1:失去是為了得到更多,多寫兩行代碼是為了少寫更多代碼吆玖。這里頭的理念是這樣的:一次插件筒溃,全局使用。
以vue使用less為例沾乘,
以前:
rules: [
//...
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
'less': [
'vue-style-loader',
'css-loader',
'less-loader'
]
}
}
}
]
這個less-loader是為.vue文件專用怜奖,其中運用內聯(lián)加載器字符串隱式地進行了鏈式處理:less-loader > css-loader > vue-style-loader,注意加載順序(從后到前)翅阵。
可是別忘了 歪玲,項目中,需要用到less的地方可不止.vue文件怎顾,比如:
在webpack的入口main.js文件中引入less:
import '../my-theme/index.less';
這么一來你就得為less額外配置了读慎,這樣就得復制粘貼一遍:
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
'less': [
'vue-style-loader',
'css-loader',
'less-loader'
]
}
}
},
{
test: /\.less$/,
use: [
'vue-style-loader',
'css-loader',
'less-loader'
]
}
]
現(xiàn)在:使用了伴隨插件:
module: {
//...
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
},
{
test: /\.less$/,
use: [
'vue-style-loader',
'css-loader',
'less-loader'
]
},
]
},
//...
plugins: [
new VueLoaderPlugin()
]
可以看到.vue中的options:{}已經刪除了,語義上讀起來就是:用vue加載器處理vue文件槐雾。非常的清爽。
.vue中的.less文件不再是vue代碼塊幅狮,而是被當成了一個真正的less文件募强,所以只要寫一次.less配置,就可以運用到全局+vue中崇摄。
當然擎值,還有更多的新特性:
參考官方文檔 https://vue-loader.vuejs.org/migrating.html#a-plugin-is-now-required。