Skip to content

Commit f7cc608

Browse files
Jitendra ThakurJitendra Thakur
authored andcommitted
Updated readme file
1 parent 6ea774a commit f7cc608

File tree

3 files changed

+65
-2
lines changed

3 files changed

+65
-2
lines changed

README.md

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,63 @@
1-
# vue-conditional-css-import
1+
# vue-conditional-css-import
2+
Switching css file based on condition like theme name, brand name etc. Using this solution, you will easily switch css based on conditon.
3+
4+
## Require module to enable conditional css.
5+
1) "node-sass"
6+
2) "style-loader"
7+
8+
## This feature is enabled in ./vue.config.js.
9+
Adding prefix "Useable" in your css file like this "theme.useable.scss"
10+
```
11+
module.exports = {
12+
chainWebpack: config => {
13+
config.module.rule('scss').exclude.add(/\.useable.scss$/)
14+
15+
config.module
16+
.rule('scss-useable')
17+
.test(/\.useable.scss$/)
18+
.use('style-loader/useable')
19+
.loader('style-loader/useable')
20+
.end()
21+
.use('css-loader')
22+
.loader('css-loader')
23+
.end()
24+
.use('postcss-loader')
25+
.loader('postcss-loader')
26+
.end()
27+
.use('sass-loader')
28+
.loader('sass-loader')
29+
}
30+
}
31+
```
32+
Refereance url :[Useable Reference](https://webpack.js.org/loaders/style-loader/#useable).
33+
[chaining-advanced Reference](https://cli.vuejs.org/guide/webpack.html#chaining-advanced)
34+
35+
### Create css javascript file for your css like "blue-theme.useable.scss" & "red-theme.useable.scss"
36+
```
37+
import blueStyles from '../../scss/blue-theme.useable.scss'
38+
export default blueStyles.use()
39+
```
40+
Styles are used: blueStyles.use()
41+
Styles are removed: blueStyles.unuse()
42+
43+
### main.js or compnent.js
44+
```
45+
// Split each import into a separate chunk (https://router.vuejs.org/guide/advanced/lazy-loading.html).
46+
const redThemecss = () => import('./lib/css/red-theme')
47+
const blueThemecss = () => import('./lib/css/blue-theme')
48+
49+
// This means they can be loaded conditionally (https://webpack.js.org/loaders/style-loader/#useable).
50+
// This feature is enabled in ./vue.config.js > chainWebpack.
51+
Vue.config.productionTip = false
52+
switch ('RED') {
53+
case 'RED': {
54+
redThemecss()
55+
break
56+
}
57+
case 'BLUE': {
58+
blueThemecss()
59+
break
60+
}
61+
}
62+
```
63+

src/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Vue from 'vue'
22
import App from './App.vue'
33
import router from './router'
4-
// Brand style
4+
55
// Split each import into a separate chunk (https://router.vuejs.org/guide/advanced/lazy-loading.html).
66
const redThemecss = () => import('./lib/css/red-theme')
77
const blueThemecss = () => import('./lib/css/blue-theme')

vue.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module.exports = {
2+
// https://cli.vuejs.org/guide/webpack.html#chaining-advanced
23
chainWebpack: config => {
34
config.module.rule('scss').exclude.add(/\.useable.scss$/)
45

0 commit comments

Comments
 (0)