安裝:sass-resources-loader
css
npm i sass-resources-loader --save-dev
修改vue-cli
的目錄下build/utils.js
vue
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>