vue-cli3 如何全局引入less变量
当有一个可在全局使用的公共less变量文件
variable.less
如何写才能一次性在所有.vue文件中引入这个文件?
我尝试了几种方法
1:安装style-resources-loader
然后配置
const path = require("path");
module.exports = {
pluginOptions: {
"style-resources-loader": {
preProcessor: "less",
patterns: [path.resolve(__dirname, "./src/assets/style/variable.less")]
}
}
};
使用后 没有任何效果
测试了 ./src @/src ~@/src 依然没有任何效果
2:在main.js中引入variable.less
这样确实可以获取到variable.less中的样式 但是变量拿不到
提示:
Variable @BG is undefined
我设置的变量是 BG 提示找不到这个变量
3:使用 下面 冯恒智 建议的方法
改写成less 结果无效
4:使用 globalVars
目前唯一成功的方法
但是感觉这样需要每次去vue.config.js里面去维护 有点不方法 有没有更好的办法
不知道如何写才能引入less的公共变量文件,
想要的效果是 在所有.vue文件里面 不用重复写 引入公共变量less文件
如果有知道怎么做的,麻烦指点一下 谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
我之前也遇到这个问题,你可能需要安装一个包就能使用变量
yarn add vue-cli-plugin-style-resources-loader
今天刚好也需要配置全局引入less变量, 发现跟楼主一样的报错,开始以为是路径或者名字写错了,一直报错,代码跟上面的几位同行说的没错。
后来想重新安装一下style-resources-loader插件吧(第一次是使用npm i style-resources-loader -D),我是使用vue-cli3安装插件的方法就可以了。
会自动安装好vue-cli-plugin-style-resources-loader的,一切没问题。
这样会自动生成如下代码:
往里面配置路径,发现可以了
如果是vue-cli3创建的项目
https://cli.vuejs.org/zh/guid...
或
https://www.npmjs.com/package...
下面这个方法似乎只对scss生效
https://cli.vuejs.org/zh/guid...
这篇总结了方法,也写了例子,你可以看看
https://blog.csdn.net/rudy_zh...
要在style里面@import
第一种方法在vue.cunfig.js中配置
const path = require("path");
module.exports = {
pluginOptions: {
}
}
测试没有报错
这样配,亲测有效
修改
vue.config.js
文件src/styles/
目录下global.less
文件修改后重新编译
npm run serve
ornpm run dev
跟楼主第一个方法一样,但是亲测有效,从项目中copy过来的。
和楼主一样的问题,试了上述方法,都不行,编译的时候一直都报less的变量undefined(组件中使用less的全局变量)
然后第二天重新试了一下~用vue create一个新项目中,依次安装less/less-loader/style-resources-loader/vue-cli-plugin-style-resources-loader
然后配置vue.config.js
直接npm run serve
然后就好了~就好了~我勒个去~
唯一的问题是less-loader版本过高会报getOption异常,固定装个版本即可~
npm install less less-loader@5.0.0 --save-dev
在此记录下该问题
Mark一下
@vue/cli 4.5.13
less ^4.1.2
less-loader ^5.0.0
vue-cli-plugin-style-resources-loader ^0.1.5
style-resources-loader ^1.5.0
之前也试了vue add style-resources-loader;完了安装不成功,还一堆报错~算了~这个方法有风险,删了node_modules包重新来过...