vue中配置scss全局變量


  在寫項目的過程中,如果用的是scss來編寫樣式代碼,常常需要定義各種變量,例如主題色、主字號之類的,因此我們會把這些變量寫到一個單獨的_variable.scss文件內,但是每次都要在vue單文件內引入這些變量未免太繁瑣了,所以有沒有辦法可以默認把變量文件作為全局文件進行引入呢?答案是肯定的,可以用下面的方法進行配置,可以根據當前使用的框架和環境來進行方法的選擇。

  一、使用vue-cli(即vue-cli2)腳手架時

  1. 首先,需要安裝一個loader,sass-resources-loader

npm install sass-resources-loader --save-dev

  

  2. 找到build文件夾下的utils.js文件,在文件內找到這段配置代碼

return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders('less'),
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
}

 

  3. 修改其中的scss項,改為

scss: generateLoaders('sass').concat({
      loader:'sass-resources-loader',
      options:{
        resources:path.resolve(__dirname,'../src/styles/_variable.scss')
      }
    })

  4. 重啟項目,即可在其他文件內使用這些變量文件了

 


  

  二、使用@vue/cli(即vue-cli3)腳手架時

  1. 找到vue.config.js文件,如果沒有的話,則自己在根目錄新建一個即可

  2. 在文件內編寫如下代碼:

module.exports = {
  css: {
    loaderOptions: {
      sass: {
        data: `@import "@/styles/_variable.scss";`
      }
    }
  }
}

  3. 重啟項目,即可使用

 

  注意:如果編寫完以上代碼,重啟項目后出現這個錯誤:

Invalid options object. Sass Loader has been initialised using an options object that does not match the API schema.

 

  那么說明,你安裝的sass-loader應該是V8的版本,可以在package.json中查看是否確實如此,如果的確是v8版本以上,則需要配置不同的寫法,因為在V8中已經廢除了data這個配置項,改為了prependData,具體可以在vue cli官網中看到此說明。【傳送門】

 

   因此,我們需要將配置代碼修改成如下樣式:

css: {
    loaderOptions: {
        sass: {
            prependData: `@import "~@/styles/_variable.scss";`
        }
    }
}

  好了,重啟一下項目,大功告成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM