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 相关文章推荐
html组件不可输入(只读)同时任何组件都有效
Apr 01 Javascript
js判读浏览器是否支持html5的canvas的代码
Nov 18 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
Dec 16 Javascript
jQuery表单域属性过滤器用法分析
Feb 10 Javascript
js实现类似MSN提示的页面效果代码分享
Aug 24 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 Javascript
Vue实现内部组件轮播切换效果的示例代码
Apr 07 Javascript
vue文件运行的方法教学
Feb 12 Javascript
vue强制刷新组件的方法示例
Feb 28 Javascript
Element InfiniteScroll无限滚动的具体使用方法
Jul 27 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
Oct 26 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数组函数
2008/08/18 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
javascript 闭包详解
2015/02/15 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
vue使用codemirror的两种用法
2019/08/27 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
Python简单生成随机数的方法示例
2018/03/31 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
python五子棋游戏的设计与实现
2019/06/18 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
简述python Scrapy框架
2020/08/17 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
写给女朋友的道歉信
2014/01/12 职场文书
小学音乐教学反思
2014/02/05 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
悬空寺导游词
2015/02/05 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python