当前roadhog是否有方法对less-loader进行配置,为了定义globalVars

发布于 2022-09-07 20:51:35 字数 310 浏览 11 评论 0

在项目组件文件夹层级相对有点深的时候,在less文件引入全局的less变量配置文件时,需要定义很长的相对路径。比如说像这样:'../../../../styles/variables',不仅需要去计算层级,而且在文件位置发生修改时也需要相应的去做修改。

如果能够通过配置less-loader定义一个全局的globalVar,比如说@src: '当前webpack工程目录'。然后在引用时像这样导入less文件@{src}/styles/variables,编码会更舒服一些。

当前有什么方案吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最丧也最甜 2022-09-14 20:51:35

大致思路是,通过在工程目录下增加一个webpack.config.js来对roadhog的webpack配置进行扩展。给resolve配置的extensions添加.less文件后缀,使其能够处理.less文件的引用。
默认情况下,less-loader在给出了paths配置的情况下,不会使用webpack resolver进行文件解析。因此,别名配置在该情况下无效。

实际解决方案:
在roadhog配置.webpackrc.js中:

alias: {
    '@': path.resolve('./src'),
    assets: path.resolve('./public/assets/'),
},

在webpack.config.js中:

module.exports = function(webpackConfig, env) {
  webpackConfig.resolve.extensions.push('.less');

  return webpackConfig;
};

在项目任意位置的.less文件:

// 能够引入工程目录下的./src/styles/vars.less文件
@import '~@/styles/vars';
李不 2022-09-14 20:51:35

// vue.config.js

const path = require('path')

module.exports = {
  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/styles/variables.less'),
      ],
    })
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文