Vue<scss的使用和全局配置>

2022.01.14更新

npm install 时的问题

推荐使用 npm install sass sass-loader 安装

"sass": "1.26.8",
"sass-loader": "8.0.2",

1.首先可以采取下面(2019.07.1更新)提到的淘宝镜像,用cnpm安装
2.仍然报错的话,可能是node-sasssass-loader版本不匹配,或者nodejs版本过高造成的

//package.json 
 "node-sass": "^6.0.1",
 "sass-loader": "^10.2.0",
全局配置

全局引入只需要在main.js内引入一个index.scss文件,其余引用样式可以在index.scss引入

// index.scss
@import './variables.scss';
@import './mixin.scss';
@import './transition.scss';
@import './element-variables.scss';
@import './element-ui.scss';
@import './sidebar.scss';

body {
  height: 100%;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
}


2019.07.1更新

.scss和.css相比较有很大的优势,其中一个就是可以通过$定制全局的样式,函数等。
具体请参考sass官网 https://www.sass.hk/

首先你需要 npm install --s node-sass sass-loader

🎐🎐--------------------🎐🎐--------------------🎐🎐--------------------🎐
注意:若无法正常安装 node-sass 请尝试使用淘宝镜像下载

npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

点击此处可查看详情说明
🎐🎐--------------------🎐🎐--------------------🎐🎐--------------------🎐

1.设置一个控制全局的.scss文件


image.png

2.在你需要用到的页面引入


image.png

需要注意的是,这种写法需要你在每个用到的页面都必须这样引入(直接在main.js引入 theme.scss是没有用的),所以教给大家一个配置全局scss的一个方法。

1.首先你需要 npm install --s sass-resources-loader
2.在build目录下找到utils.js文件

image.png

具体放置位置如图:

image.png

具体代码如下:

 function generateSassResourceLoader() {
    let loaders = [
    cssLoader,
    'sass-loader',
    {
    loader: 'sass-resources-loader',
    options: {
    // 多个文件时用数组的形式传入,单个文件时可以直接使用 path.resolve(__dirname, '../static/style/common.scss'
    resources: path.resolve(__dirname, '../src/assets/css/theme.scss')
    }
    }
    ];
    if (options.extract) {
    return ExtractTextPlugin.extract({
    use: loaders,
    fallback: 'vue-style-loader'
    })
    } else {
    return ['vue-style-loader'].concat(loaders)
    }
    }
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
  return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders('less'),
    // sass: generateLoaders('sass', { indentedSyntax: true }),
    // scss: generateLoaders('sass'),
    sass:generateSassResourceLoader(),
    scss:generateSassResourceLoader(),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }

重新 npm run dev 一下,然后就可以了。就不需要再在每个页面引入那个theme.scss文件了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从18年7月16号入职到现在已经5个月多了,入职之后就一直使用vue,来这边温习记录下使用的步骤。在我的理解中vu...
    拖孩阅读 1,945评论 2 12
  • 原文标题:Gulp for Beginners作者: Zell Liew翻译:治电小白菜原文地址:https://...
    ZZES_ZCDC阅读 1,604评论 6 18
  • Sass&Gulp 一、sass介绍 (一) SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计...
    锋享前端阅读 1,531评论 0 3
  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,484评论 1 32
  • 周末,外出搞活动。和一位搞服装设计的姑娘同行,温州人,直爽又率性。简约的设计和大胆的色泽搭配是她独有的风格,她目前...
    以琳小语阅读 366评论 0 1