vue-cli2:引入less和配置less变量可全局使用

时间:2025-01-22 10:01:29

版本说明:本文档针对vue-cli2

一.安装less

npm i less less-loader --save-dev

二.设置less变量到全局

// 1.安装sass-resources-loader
npm install sass-resources-loader --save-dev
// 2.配置build/,找到函数,如下
 = function (options) {
  options = options || {}

  const cssLoader = {
    loader: 'css-loader',
    options: {
      sourceMap: 
    }
  }

  const postcssLoader = {
    loader: 'postcss-loader',
    options: {
      sourceMap: 
    }
  }

  // 此处添加配置

  // generate loader string to be used with extract text plugin
  function generateLoaders (loader, loaderOptions) {
    const loaders =  ? [cssLoader, postcssLoader] : [cssLoader]

    if (loader) {
      ({
        loader: loader + '-loader',
        options: ({}, loaderOptions, {
          sourceMap: 
        })
      })
    }

    // Extract CSS when that option is specified
    // (which is the case during production build)
    if () {
      return ({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

  // /en/configurations/
  return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders('less'), // 第二步更改这里
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }
}

在上面注释“// 此处添加配置”处添加如下代码:

 // 配置less变量全局
  function lessResourceLoader() {
    var loaders = [
      cssLoader,
      'less-loader',
      {
        loader: 'sass-resources-loader',
        options: {
          resources: [
            (__dirname, '../src/assets/style/'), // ../src/assets/style/为你的全局less变量的文件目录
          ]
        }
      }
    ]
    if () {
      return ({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

3.更改函数的return参数,将less: generateLoaders(‘less’)改为 less: lessResourceLoader(‘less’),如下:

 return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    //  less: generateLoaders('less'), // 更改这里为下面一行
    less: lessResourceLoader('less'),  // lessResourceLoader即第一步添加的函数名
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }

经过上面两处更改后,函数如下:

 = function (options) {
  options = options || {}

  const cssLoader = {
    loader: 'css-loader',
    options: {
      sourceMap: 
    }
  }

  const postcssLoader = {
    loader: 'postcss-loader',
    options: {
      sourceMap: 
    }
  }

  // 第一步:配置less变量全局
  function lessResourceLoader() {
    var loaders = [
      cssLoader,
      'less-loader',
      {
        loader: 'sass-resources-loader',
        options: {
          resources: [
            (__dirname, '../src/assets/style/'), // ../src/assets/style/为你的全局less变量的文件目录
          ]
        }
      }
    ]
    if () {
      return ({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

  // generate loader string to be used with extract text plugin
  function generateLoaders (loader, loaderOptions) {
    const loaders =  ? [cssLoader, postcssLoader] : [cssLoader]

    if (loader) {
      ({
        loader: loader + '-loader',
        options: ({}, loaderOptions, {
          sourceMap: 
        })
      })
    }

    // Extract CSS when that option is specified
    // (which is the case during production build)
    if () {
      return ({
        use: loaders,
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

  // /en/configurations/
  return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    // 第二步: less: generateLoaders('less')更改为 less: lessResourceLoader('')
    // less: generateLoaders('less'),
    less: lessResourceLoader(''),
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }
}

重启项目即可