编辑文章时所使用vue版本

{
"vue": "^2.5.2",
}

一、安装less、less-loader和sass-resources-loader

npm install less@3.0.4 less-loader@5.0.0 sass-resources-loader@2.2.5

二、修改build/webpack.base.conf.js配置

moduel.exports = {
...,
module: {
rules: [
...,
{
test: /\.less$/,
use: ['vue-style-loader', 'css-loader', 'less-loader']
}
]
}
}

三、修改build/util.js配置

// 修改已有的generateLoaders
function generateLoaders(loader, loaderOptions) {
const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]

if (loader) {
if (loader == 'less') {
loaders.push(
{
loader: 'less-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
},
{
loader: 'sass-resources-loader',
options: {
// common.less 自己的公共变量路径
resources: [path.resolve(__dirname, '../src/style/variables.less')]
}
}
);
} else {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
}

...

// 新增一个全局使用less的函数
function lessResourceLoader() {
var loaders = [
cssLoader,
'less-loader',
{
loader: 'sass-resources-loader',
options: {
resources: [
path.resolve(__dirname, '../src/style/variables.less') //定义全局变量的文件路径
]
}
}
];
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
});
} else {
return ['vue-style-loader'].concat(loaders);
}
}
// 修改less的配置
return {
...
less: lessResourceLoader(),
....
}

四、现在可以在vue文件中开始使用less

<style lang="less" scoped>
@box-color: #3370ff;
.box {
color: @box-color
}
</style>