Vue-cli · 常用配置

1,314 阅读1分钟

1.在vue-cli中应用scss全局变量?

首先引入scss:

npm install --save-dev sass-loader
npm install --save-dev node-sass

配置sass全局变量需要安装一个开发插件:sass-resources-loader

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

然后修改vue-clibuild/utils.js,找到scss的加载设置:

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

修改为:

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/css/global.scss')
      }
    }),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }

其中path.resolve需要传入待引入的scss文件,我的在./../src/assets/css/global.scss__dirname代表当前目录

保存后需要重启开发命令:npm run dev

完成!

global.scss定义变量:

$screen-lg-min: 992px;

$screen-md-min: 768px;
$screen-md-max: 991px;

$screen-sm-max: 767px;

使用:

<style lang="scss" scoped>
  @media screen and (min-width: $screen-lg-min) {
    .header-menu {
      display: none;
    }
  }
  @media screen and (min-width: $screen-md-min) and (max-width: $screen-md-max) {
    .header-menu {
      display: none;
    }
  }
  @media screen and (max-width: $screen-sm-max) {

  }
  </style>