基于webpack4+vue-cli3项目实现换肤功能

2020-06-14 06:26:50易采站长站整理

起因

最近因公司需求,需要实现主题换肤功能,不仅仅是颜色的更改,还需要包括图片,字体等文件等更换,因此在百度里各种实现方案后,决定根据

scss+style-loader/useable
做换肤。

项目开始

首先我们用

vue-element-admin
这个开源的后台管理系统项目来做demo演示,为了便于做二次开发,下载vue-admin-template来开发。


// 从github下载vue-admin-template
clone https://github.com/PanJiaChen/vue-admin-template.git
cd vue-admin-template
npm install
npm run dev

运行成功后的效果

安装style-loader处理器

因为

vue-admin-template
项目是添加过
sass-loader
依赖的,所以不用我们再次安装,在上一步就已经安装好了。


npm install style-loader --save-dev

创建主题文件

在src目录下创建

theme-chalk、theme-light
主题文件夹
在两个主题目录下创建index.useable.scss文件 

index.useable.scss
中写入样式


// theme-chalk/index.useable.scss
body {
background: red;
}
// theme-light/index.useable.scss
body {
background: green;
}

到此,我们的主题样式都已经建好了,现在要将主题应用上去

在vue.config.js中增加style-loader/useable

vue-cli2根vue-cli3的配置区别还是挺大的,我在配置的过程中遇到很多坑,因为vue-cli3没有了webpack.config.js文件,我们在配置webpack的时候无法根据老文档来配置,需要熟悉cli3的webpack-chain来链式修改配置,但是文档很少,配置的过程中异常困难。

在配置文件中chainWebpack链式修改webpack配置就能成功应用loader了,话不多说,直接上代码,


// 换肤loader
const scss = config.module.rule('scss').toConfig();