vue项目使用scss

1. 安装sass 依赖包

npm  install sass-loader --save-dev
npm install node-sass --sava-dev
npm install vue-style-loader --sava-dev

vue-loader是一个webpack的loader。用来把vue组件转换成可部署的js,html,css模块。所以我们如果要想再vue项目中使用scss,肯定要告诉vue-loader怎么样解析我的scss文件。

在webpack中,所有预处理器都要匹配相应的loader,vue-loader允许其他的webpack-loader处理组件中的一部分吗,然后它根据lang属性自动判断出要使用的loaders。所以,其实只要安装处理sass/scss的loader。就能在vue中使用scss了。

无需为scss/sass配置loader,因为vue-loader会自动根据文件格式后缀名去使用对应的loader

2. 为什么无需配置

我们前面说到,vue-loader允许能根据lang属性自动判断出要使用的loaders。它是怎么样做到的?有这么神奇嘛?我们下面来看一看最核心部分的源代码

exports.cssLoaders = function (options) {
    
    
 options = options || {
    
    }
 
 var cssLoader = {
    
    
  loader: 'css-loader',
  options: {
    
    
   minimize: process.env.NODE_ENV === 'production',
   sourceMap: options.sourceMap
  }
 }
 
 // generate loader string to be used with extract text plugin
 function generateLoaders (loader, loaderOptions) {
    
    
  var loaders = [cssLoader]
  if (loader) {
    
    
   loaders.push({
    
    
    loader: loader + '-loader',
    options: Object.assign({
    
    }, loaderOptions, {
    
    
     sourceMap: options.sourceMap
    })
   })
  }
 
  // Extract CSS when that option is specified
  // (which is the case during production build)
  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'),
  stylus: generateLoaders('stylus'),
  styl: generateLoaders('stylus')
 }
}

就是上述这段代码让vue-loader有了这种能力,它会根据不同的文件去使用不同的loader

3. 接下来就是正常使用scss啦

猜你喜欢

转载自blog.csdn.net/qq_17627195/article/details/109047073