<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 22:12:57
        文檔

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

        webpack項目輕松混用css module的方法:前言 本文講述css-loader開啟css模塊功能之后,如何與引用的npm包中樣式文件不產生沖突。 比如antd-mobilenpm包的引入。在不做特殊處理的前提下,樣式文件將會被轉譯成css module。 一、產生問題的原因 { test: /\.css$/, use: [ '
        推薦度:
        導讀webpack項目輕松混用css module的方法:前言 本文講述css-loader開啟css模塊功能之后,如何與引用的npm包中樣式文件不產生沖突。 比如antd-mobilenpm包的引入。在不做特殊處理的前提下,樣式文件將會被轉譯成css module。 一、產生問題的原因 { test: /\.css$/, use: [ '

        前言

        本文講述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.用文件名區分兩種模式

        1. *.global.css 普通模式
        2. *.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
         }
         }
        ]

        參考

        [1] [Updated README regarding relative filepaths issue #121]

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        webpack項目輕松混用css module的方法:前言 本文講述css-loader開啟css模塊功能之后,如何與引用的npm包中樣式文件不產生沖突。 比如antd-mobilenpm包的引入。在不做特殊處理的前提下,樣式文件將會被轉譯成css module。 一、產生問題的原因 { test: /\.css$/, use: [ '
        推薦度:
        標簽: css module web項目
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久久亚洲AV无码专区网站| 亚洲av无码国产精品色午夜字幕| 97se亚洲综合在线| 亚洲av极品无码专区在线观看| 中文字幕在线免费看线人| 免费人成视频x8x8入口| 免费看黄网站在线看| 亚洲va中文字幕无码| v片免费在线观看| 久久久久亚洲AV成人网人人软件| 九九全国免费视频| 亚洲日韩中文字幕日韩在线| 成人a毛片视频免费看| 久久电影网午夜鲁丝片免费| 久久亚洲精品国产亚洲老地址| 青青操免费在线观看| 国产av天堂亚洲国产av天堂| 免费观看又污又黄在线观看| 亚洲精品国产日韩无码AV永久免费网| 四虎影视久久久免费| 久久国产亚洲精品麻豆| 日本免费大黄在线观看| 亚洲午夜无码片在线观看影院猛 | 精品一区二区三区免费视频| 在线观看免费成人| 黄色a三级免费看| 国产一区视频在线免费观看 | 中文字幕亚洲色图| 人成午夜免费视频在线观看| 亚洲精品无AMM毛片| 免费看韩国黄a片在线观看| 亚洲av无码成人精品区一本二本 | 一区二区无码免费视频网站| 亚洲国产成人AV在线播放 | 亚洲视频一区在线观看| 两个人的视频高清在线观看免费| 免费无码一区二区| 91亚洲精品视频| 国产成人免费片在线观看| 在线观看片免费人成视频无码| 中文亚洲AV片不卡在线观看|