国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

webpack項目輕松混用css module的方法

2024-05-06 15:33:27
字體:
來源:轉載
供稿:網友

前言

本文講述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    }  }]            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 广灵县| 扎赉特旗| 亳州市| 红桥区| 西乌珠穆沁旗| 内丘县| 东丰县| 兰溪市| 安多县| 宁明县| 益阳市| 黄冈市| 礼泉县| 洛阳市| 无锡市| 罗甸县| 霍城县| 南靖县| 苏尼特左旗| 山阴县| 福州市| 九寨沟县| 荃湾区| 鄯善县| 南京市| 突泉县| 溆浦县| 娄烦县| 隆尧县| 晴隆县| 上饶市| 中阳县| 黎城县| 德保县| 竹北市| 湖南省| 贵港市| 安新县| 平和县| 河南省| 淮滨县|