1. 程式人生 > 實用技巧 >scss全域性混入配置(引用)

scss全域性混入配置(引用)

在main.js和app.vue中引入混入後,並不能直接在全域性使用

要使混入全域性宣告,可以在vue.config.js中配置(方法2實證可行)

a.方法1

如果使用的是vue-cli的版本是比較低的版本,我們可以通過使用 sass-resources-loader這個外掛,修改vue-cli的目錄下build/utils.js 。從而實現scss檔案的共享。

步驟1:首先安裝sass-resources-loader這個外掛。

1 npm i sass-resources-loader --save-dev

步驟2:修改build資料夾下的utils.js檔案,找到return選項,修改它的scss屬性進行入下配置,其他不用改變。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 return { css: generateLoaders(), postcss: generateLoaders(), less: generateLoaders('less'), sass: generateLoaders('sass', { indentedSyntax: true }), //修改這個scss屬性 scss: generateLoaders('sass').concat({ loader:'sass-resources-loader', options:{
resources:[ path.resolve(__dirname,'../src/assets/variable.scss'), path.resolve(__dirname,'../src/assets/mixin.scss'), path.resolve(__dirname,'../src/assets/base.scss') ] } }), stylus: generateLoaders('stylus'), styl: generateLoaders('stylus') }

步驟3:測試階段,新建一個Test.vue元件,進行入下配置

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <template> <div> <!-- test類的預設樣式 --> <div class="test"> test </div> <div class="box2"> ssss </div> </div> </template> <style lang="scss"> .test{ //訪問公共的scss變數 font-size:$tsize; background: $bg; } .box2{ //訪問公共的scss混入 @include wh($w2,$h2) } </style>

b.方法2

如果使用的vue-cli的版本是高版本的,那麼可以直接修改vue.config.js這個檔案的css.loaderOptions選項,就可以讓每個元件使用公用的scss檔案了。

步驟1:同樣首先安裝sass-resources-loader這個外掛。

1 npm i sass-resources-loader --save-dev

步驟2:在專案主目錄下新建一個vue.config.js配置檔案。大概的配置參考這篇文章

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 const path=require('path') module.exports={ publicPath: process.env.NODE_ENV === 'production' ? '/public/' : './', assetsDir:'assets', indexPath:'myIndex.html', filenameHashing:false, productionSourceMap: false, css: { loaderOptions: { sass: { //依次匯入的公用的scss變數,公用的scss混入,共用的預設樣式 prependData: ` @import "./src/assets/css/variable.scss"; @import "./src/assets/css/mixin.scss"; @import "./src/assets/css/base.scss"; ` } } } }

步驟3:測試階段,和方法一的步驟3一樣。

c.方法3

如果使用的vue-cli的版本是高版本的,那麼可以直接修改vue.config.js這個檔案的chainWebpack這個屬性來實現多個scss檔案的公用。

步驟1:同樣首先安裝sass-resources-loader這個外掛。

1 npm i sass-resources-loader --save-dev

步驟2:在專案主目錄下新建一個vue.config.js配置檔案。大概的配置參考這篇文章

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 const path=require('path') module.exports={ publicPath: process.env.NODE_ENV === 'production' ? '/public/' : './', assetsDir:'assets', indexPath:'myIndex.html', filenameHashing:false, productionSourceMap: false, chainWebpack:config=>{ const types=['vue'] types.forEach(type=>{ config.module.rule('scss').oneOf(type).use('style-resource') .loader('style-resources-loader') .options({ patterns:[ //公用的scss變數 path.resolve(__dirname,'./src/assets/css/variable.scss'), //公用的scss混入 path.resolve(__dirname,'./src/assets/css/mixin.scss'), //共用的預設樣式 path.resolve(__dirname,'./src/assets/css/base.scss') ] }) }) } }

引用自https://www.jb51.net/article/175576.htm