|
1 | 1 | # vue-conditional-css-import
|
2 | 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 | 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 | 4 | ### main.js or compnent.js
|
44 | 5 | ```
|
45 | 6 | // 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') |
| 7 | +const redThemecss = () => import('@/scss/red-theme.scss') |
| 8 | +const blueThemecss = () => import('@/scss/blue-theme.scss') |
48 | 9 |
|
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 | 10 | Vue.config.productionTip = false
|
52 | 11 | switch ('RED') {
|
53 | 12 | case 'RED': {
|
|
0 commit comments