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 新浪的一个图片播放图片轮换效果代码
Jul 15 Javascript
javascript 定义新对象方法
Feb 20 Javascript
jQuery最佳实践完整篇
Aug 20 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
node.js中的fs.writeFile方法使用说明
Dec 14 Javascript
超赞的动手创建JavaScript框架的详细教程
Jun 30 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
Angular实现表单验证功能
Nov 13 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
Feb 10 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
Aug 23 Javascript
Vue-CLI 项目在pycharm中配置方法
Aug 30 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
Jul 21 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跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
jquery等待效果示例
2014/05/01 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
canvas绘制七巧板
2017/02/03 Javascript
angularJS开发注意事项
2018/05/26 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
工厂仓管员岗位职责
2014/01/01 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
代理商会议邀请函
2014/01/27 职场文书
班队活动设计方案
2014/01/30 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
导师工作推荐信范文
2014/05/17 职场文书
婚育证明格式
2015/06/17 职场文书