关于webpack项目混用css module的方法

这篇文章主要介绍了webpack项目轻松混用css module的方法,内容挺不错的,现在分享给大家,也给大家做个参考。

前言

本文讲述css-loader开启css模块功能之后,如何与引用的npm包中样式文件不产生冲突。

比如antd-mobilenpm包的引入。在不做特殊处理的前提下,样式文件将会被转译成css module。

一、产生问题的原因

立即学习“前端免费学习笔记(深入)”;

{   test: /.css$/,  use: [    'style-loader',    {      loader: 'css-loader',      options: {        modules: true,        localIdentName: '[hash:base64:6]'      }    },    'postcss-loader'  ] }

登录后复制

以上代码片段,摘自webpack配置的module.rule。

可以看出wepack在编译过程中,遇到.css结尾的文件,都会交由postcss-loader、css-loader和style-loader依次处理。

因为css-loader开启了css模块功能,所以,所有经过处理的css文件,类名都将被改变。

二、初步改进

使用exclude和include进行区分

1.node_module文件夹内的文件,避免被当前rule处理

{   test: /.css$/,  use: [    {      loader: 'style-loader'    },    {      loader: 'css-loader',      options: {        modules: true,        localIdentName: '[hash:base64:6]'      }    },    {      loader: 'postcss-loader'    }  ],  exclude:[path.resolve(__dirname, '..', 'node_modules')]}

登录后复制

如上所示,将node_module文件夹内的文件,用exclude排除在外,不用当前rule进行处理。

2.单独处理node_module内的css文件

{   test: /.css$/,  use: [    {      loader: 'style-loader'    },    {      loader: 'css-loader'    },    {      loader: 'postcss-loader'    }  ],  include:[path.resolve(__dirname, '..', 'node_modules')]}

登录后复制

三、升级版,支持css module模式和普通模式混用

1.用文件名区分两种模式

*.global.css 普通模式

*.css css module模式

这里统一用 global 关键词进行识别。

2.用正则表达式匹配文件

// css module{   test: new RegExp(`^(?!.*\.global).*\.css`),  use: [    {      loader: 'style-loader'    },    {      loader: 'css-loader',      options: {        modules: true,        localIdentName: '[hash:base64:6]'      }    },    {      loader: 'postcss-loader'    }  ],  exclude:[path.resolve(__dirname, '..', 'node_modules')]}// 普通模式{   test: new RegExp(`^(.*\.global).*\.css`),  use: [    {      loader: 'style-loader'    },    {      loader: 'css-loader',    },    {      loader: 'postcss-loader'    }  ],  exclude:[path.resolve(__dirname, '..', 'node_modules')]}

登录后复制

四、其他问题

less在使用css module时,对url的解析存在冲突,可以用resolve-url-loader进行解决,直接上代码:

test: /.less/,use: [  {    loader: "style-loader"  },  {    loader: "css-loader",     options: {      sourceMap: true,      importLoaders: 2    }  },  {    loader: "postcss-loader",     options: {      sourceMap: true    }  },  {    loader: "resolve-url-loader",     options: {      sourceMap: true    }  },  {    loader: "less-loader",     options: {      sourceMap: true    }  }]

登录后复制

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

通过优先级对比验证CSS控制样式的三种方式

通过优先级对比验证CSS控制样式的三种方式

通过优先级对比验证CSS控制样式的三种方式

以上就是关于webpack项目混用css module的方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2895411.html

(0)
上一篇 2025年3月10日 22:58:50
下一篇 2025年3月8日 18:21:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 关于CSS编程的OOCSS和SMACSS设计模式的介绍

    这篇文章主要介绍了浅谈css编程的oocss和smacss设计模式,作者分析了这两种设计css的不同思路,需要的朋友可以参考下 真心觉得写出 CSS 并不难,但是要写出可被维护的 CSS 比其他程式语言都还难。所幸已经有许多大师级的人物,提…

    编程技术 2025年3月10日
    200
  • CSS制作提示框 ‘正在加载请。。。。。’的方法

    这篇文章主要介绍了关于css制作提示框 ‘正在加载请。。。。。’的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近做项目遇到这样的需求,页面加载数据比较慢,一直没有反应,下面小编给大家带来了基于CSS制作提示框 ‘正…

    2025年3月10日
    200
  • CSS 使用Sprites技术实现圆角的效果

    这篇文章主要介绍了关于css 使用sprites技术实现圆角的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 使用CSS Sprites技术画圆角,简单的讲就是把一个圆做在一张图上,定义4个p,每个p取图的一个角做背景,…

    2025年3月10日
    200
  • css中关于定位属性position为fixed的使用介绍

    这篇文章主要介绍了关于css中关于定位属性position为fixed的使用介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 当一个div想要定位时,我们第一反应是position属性,而position属性除了默认值外,…

    编程技术 2025年3月10日
    200
  • CSS透明opacity和IE各版本透明度滤镜filter的用法

    css3的透明度属性opacity想必大家都已经用的无处不在了。而对于不支持css3的浏览器如何进行透明处理,保持浏览器效果的一致,本篇文章主要介绍了详解css透明opacity和ie各版本透明度滤镜filter的最准确用法,有兴趣的可以了…

    编程技术 2025年3月10日
    200
  • css上下文选择器

    家族: 祖宗,父辈,兄弟同辈关系 1.祖先元素: 包括多级后代的元素; 2.父级元素: 仅包括一级子元素的元素; 3.相邻元素: 拥有同一个父级的元素; 1.后代选择器:先找到祖先元素,再选择它下面的所有指定后代元素 立即学习“前端免费学习…

    编程技术 2025年3月10日
    200
  • 关于CSS更改鼠标为手状样式的介绍

    这篇文章主要介绍了css更改鼠标为手状样式的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在自行设置的p或者其他标签中,为了更好的体验效果,会将在滑动过程中,将鼠标变为手势 简单总结下css对应的样式。 所在的p中,添加cur…

    编程技术 2025年3月10日
    200
  • 关于CSS中的position:relative;的作用介绍

    这篇文章主要介绍了关于css中的position:relative;的作用介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 CSS中的position:relative是控制元素相对定位的,relative 不脱离文档流而…

    编程技术 2025年3月10日
    200
  • 针对主流浏览器的CSS-HACK写法及IE常用条件注释

    本文将为你总结css针对各浏览器的兼容hack(以ie6/ie7/ie8 /ff为主),以及ie特有的条件注释使用方法. 对于前端工作者,最痛苦的事莫过于浏览器兼容性的调试,而这最痛苦的事中,最变态的莫过于微软的三个版本IE6.0/IE7.…

    编程技术 2025年3月10日
    200
  • CSS制作Web页面条纹背景样式的介绍

    这篇文章主要介绍了关于css制作web页面条纹背景样式的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 通过CSS中的linear-gradient主要就能显示出不同方向的条纹效果,这里我们就来详解CSS制作Web页面条…

    2025年3月10日
    200

发表回复

登录后才能评论