vue-cli中配置全局sass變量

配置

安裝:
sass-resources-loadercss

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

修改vue-cli的目錄下build/utils.jsvue

scss選項修改成以下選項:css3

return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders('less'),
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass').concat({
      loader:'sass-resources-loader',
      options:{
        resources:path.resolve(__dirname,'../src/assets/sass/base_core.scss')
      }
    }),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }

我的使用習慣

我這裏是指定了../src/assets/sass/base_core.scss爲個人根scss文件,其餘的scss文件都引入到這個scss文件中。web

//  ../src/assets/sass/base_core.scss
@import "./_setting.scss";
@import "./_css3.scss";
@import "./_mixin.scss";

./_setting.scss裏放的是全部靜態scss變量vue-cli

$fontsize-tiny:          ptr(12px)!default;
$fontsize-small:         ptr(14px)!default;

./_mixin.scss裏放的是公用的混合器或者通用類npm

//截字
//SCSS 的」%」 與 「.」 功能相似,可是不會輸出代碼
%ellipsis-basic {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

//文字超出後以...顯示 支持多行
@mixin fn-ellpisis($line) {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: $line;
  overflow: hidden;
}

固然,怎麼歸類是我的習慣問題。sass

這樣,我僅僅在build/utils.js下引入一次,就能夠在全部的vue組件中使用全局scss相關,而再也不須要每一個vue組件都引入一次了,固然,打包也是按需打包的,用到什麼scss纔會打包什麼scss。less

怎麼使用

固然,在vue-cli中怎麼配置sass環境,網上不少教程,就沒必要多說了。post

<template>
  <div class="demo">
    demo
  </div>
</template>

<script>
export default {
  name: 'demo'
}
</script>

<style lang="scss">
//直接用就好,不用單獨引用你的sass包了
#demo{
    color:$fontsize-tiny;
    @extend %ellipsis-basic;
    @include fn-ellpisis(2);
}
</style>
相關文章
相關標籤/搜索