vue项目中配置LESS全局变量注入

3 篇文章 0 订阅

vue项目中配置全局变量注入

在日常项目中,很多人都用到了css预处理器 ,如sass,less, stylus,处理样式非常方便,尤其是嵌套,变量,函数等,让我们书写css非常nice,在项目中一般会建立一个样式文件夹(此处用less),存放公共样式和公共变量如项目主体色,字体大小等等的变量,但是在项目中使用这些变量的时候通常都要在style标签内用@import '***/***/***/***.less';这样的方式来导入公共变量,页面一多,每个页面一般都需要引入就会感到很繁琐,所以此处就用到webpack的一些配置来达到全局注入,单个文件不需要单独引入的目的。

此处说下自己用的之前的脚手架版本的配置

在build文件夹下的webpack.base.conf.js文件中修改,主要借助了sass-resources-loader。配置的时候还需要在问价头部引入path,const path = require('path')
然后在module模块下进行配置

	 module: {
		 		  resolve: {
		    extensions: ['.ts', '.js', '.vue', '.json'],
		    // 顺带说下 此处可以配置路径别名,以后引入文件就不需要../../../这样了,直接@/就可以了,代表src下的路径,当然可设置多个,可自行配制
		    alias: {
				      '@': utils.resolve('src')
				    }
				  },
				  ///
				rules: [
				      ...(config.dev.useEslint ? [createLintingRule()] : []),
				      // /-------------
				   {
				        test: /\.less$/,
				        use: [{
				          loader: process.env.NODE_ENV === 'production' ? MiniCssExtractPlugin.loader : 'vue-style-loader'
				        }, {
				          loader: 'css-loader',
				          options: {
				            sourceMap: cssSourceMap
				          }
				        }, {
				          loader: 'less-loader',
				          options: {
				            sourceMap: cssSourceMap
				          }
				        }
				        //此处开始------/ 
				        {
				          loader: 'sass-resources-loader',
				          options: {
				            resources: [
				              path.resolve(__dirname, '此处写自己配置的公共变量文件路径,比如../src/themes/publicStyle/common.less')
				            ]
				          }
				          //此处结束-------/ 
				        }]
				  },

然后说下自己查资料研究的cli3下的全局变量注入

cli3 与之前的cli不一样了,build和config文件没有了 ,所有的配置都需要在自己新建的vue.config.js文件里进行配置,具体配置官方文档和各种资料都很详细,在这就不详述了,在这就说下自己练手的一些配置,仅供参考,主要看全局变量注入那块,主要用的是style-resources-loadernpm i style-resources-loader -D

const path = require("path");
function resolve(dir) {
  return path.join(__dirname, dir);
}
module.exports = {
  publicPath: "./",
  outputDir: "dist",
  assetsDir: "assets",
  indexPath: "index.html",
  filenameHashing: true,
  pages: undefined,
  lintOnSave: true,
  runtimeCompiler: false,
  transpileDependencies: [],
  productionSourceMap: false,
  crossorigin: undefined,
  integrity: false,
  devServer: {
    proxy: {
      "/api": {
        target: "************",
        changeOrigin: true,
        pathRewrite: { "^/api": "" }
      }
    }
  },
 // ----------------------------------------------------此处开始,以下是全局变量注入的配置---------------------------------
  chainWebpack: config => {
    config.resolve.alias.set("@assets", resolve("src/assets"))
    // 这里只写了两个个,你可以自己再加,按这种格式.set("", resolve(""))
    const types = ["vue-modules", "vue", "normal-modules", "normal"]
    types.forEach(type =>
      addStyleResource(config.module.rule("less").oneOf(type))
    );
  },
  css: {
    loaderOptions: {
      less: {
        javascriptEnabled: true
      }
    }
  }
};
function addStyleResource(rule) {
  rule
    .use("style-resource")
    .loader("style-resources-loader")
    .options({
      patterns: [
        path.resolve(__dirname, "src/styles/index.less") // 需要全局导入的less
      ]
    })
}

大家一起加油! 如有不对之处,请大家不吝赐教。

之后看到另一个后台管理系统的配置,发现另一种配法 (cli3)
安装less less-loader style-resources-loader

npm install -D less-loader less
npm i style-resources-loader
npm i vue-cli-plugin-style-resources-loader


安装完后,在vue.config.js中配置
const path = require('path');
module.exports = {
    pluginOptions: {
        'style-resources-loader': {
            preProcessor: 'less',
            patterns: [
                // 这个是加上自己的路径,不能使用(如下:alias)中配置的别名路径
                path.resolve(__dirname, './src/style/params.less')
            ]
        }
    },
    ……
    其他配置
    ……
}

安装的时候也可以方法二:直接使用vue add style-resources-loader安装,vue add pluginName 是vue-cli3提供的。vue add 是用yarn安装插件的, yarn源的问题有可能导致失败。如果安装失败的话,就上面分别安装的方法来
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue3,要定义全局变量,可以使用插件vue-cli-plugin-style-resources-loader来实现。首先,需要安装依赖库yarn add vue-cli-plugin-style-resources-loader -D。接下来,在vue.config.js文件进行配置,可以使用以下代码: ``` const path = require('path') module.exports = { pluginOptions: { 'style-resources-loader': { preProcessor: 'less', patterns: [path.resolve(__dirname, './src/styles/variables.less')] } } } ``` 然后,在src/styles目录下新建一个variables.less文件,定义全局变量,比如@warningColor: red;。最后,在需要使用全局变量的地方,可以在<style lang="less">标签直接引用该变量,例如: ``` <style lang="less"> .wrap { color: @warningColor; } </style> ``` 这样就可以在Vue3定义并使用全局变量了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【VUE - 工具 - LESS】03、vuecli3.0+使用less定义全局变量](https://blog.csdn.net/weixin_44402694/article/details/116655484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [浏览器显示数据库数据的条形图柱状图 前后端分离vue.js+spring boot 计算机软件工程课程设计毕业设计 ...](https://download.csdn.net/download/Amzmks/88275824)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值