vue-cli4使用全局less文件中的变量配置操作


Posted in Javascript onOctober 21, 2020

目录结构如下:

vue-cli4使用全局less文件中的变量配置操作

需求:

在Navgation.vue中使用global.less中的变量

vue-cli3的配置方法如下:传送门

vue-cli4的配置方法如下:

安装 style-resources-loader

npm i style-resources-loader -D

在 vue.config.js 中加上如下配置,没有则创建该文件,文件名不能改,如下:

// vue.config.js
const path = require('path')
 
module.exports = {
 lintOnSave: false,
 chainWebpack: config => {
 const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
 types.forEach(type => addStyleResource(config.module.rule('less这里写你的样样式类型').oneOf(type)))
 },
}
 
function addStyleResource (rule) {
 rule.use('style-resource')
 .loader('style-resources-loader')
 .options({
  patterns: [
  path.resolve(__dirname, './src/assets/css/global.less这里写你的全局样式地址'),
  ],
 })
}

补充知识:vue项目中配置LESS全局变量注入

在日常项目中,很多人都用到了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-loader ,npm 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源的问题有可能导致失败。

如果安装失败的话,就上面分别安装的方法来

以上这篇vue-cli4使用全局less文件中的变量配置操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js一次改变多个input的readonly属性值的方法
Jun 11 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
JavaScript列表框listbox全选和反选的实现方法
Mar 18 Javascript
javascript弹出窗口实现代码
Nov 12 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
AngularJS ng-blur 指令详解及简单实例
Jul 30 Javascript
微信小程序 下拉菜单的实现
Apr 06 Javascript
JavaScript设计模式之单例模式详解
Jun 09 Javascript
vue debug 二种方法
Sep 16 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 Javascript
Vue源码分析之Vue实例初始化详解
Aug 25 Javascript
vue实现分页加载效果
Dec 24 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
Oct 21 #Javascript
js 图片懒加载的实现
Oct 21 #Javascript
uniapp实现可以左右滑动导航栏
Oct 21 #Javascript
解决vue-loader加载不上的问题
Oct 21 #Javascript
Vue实现返回顶部按钮实例代码
Oct 21 #Javascript
vue将文件/图片批量打包下载zip的教程
Oct 21 #Javascript
uniapp实现可滑动选项卡
Oct 21 #Javascript
You might like
一个php作的文本留言本的例子(二)
2006/10/09 PHP
mysql中存储过程、函数的一些问题
2007/02/14 PHP
php empty函数判断mysql表单是否为空
2010/04/12 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
Python使用爬虫猜密码
2016/02/19 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
通俗讲解python 装饰器
2020/09/07 Python
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
大学生文员专业个人求职信范文
2014/01/05 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
安全横幅标语
2014/06/09 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript