国产探花免费观看_亚洲丰满少妇自慰呻吟_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    }  }]            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 炉霍县| 龙门县| 博白县| 漠河县| 阜新| 尚志市| 三原县| 商都县| 射洪县| 庆阳市| 丹凤县| 富宁县| 开阳县| 大邑县| 宁陵县| 凌源市| 禄丰县| 肥西县| 金川县| 界首市| 剑阁县| 渭南市| 宾川县| 连州市| 岳普湖县| 隆回县| 吉木乃县| 嘉黎县| 邵东县| 临高县| 龙川县| 濉溪县| 九龙城区| 东宁县| 南和县| 定日县| 玛沁县| 襄垣县| 方正县| 鄂托克前旗| 海伦市|