iamsiutw / daily_note

Blog/Daily Note
1 stars 0 forks source link

20190314 #27

Open iamsiutw opened 5 years ago

iamsiutw commented 5 years ago

日期: 2019/3/14 THU

目標: 27/30


React CSS Module

為了避免樣式命名衝突造成汙染的情況發生,使用 CSS Module 是個不錯的解決方案之一,要在 React 專案中使用 CSS Module 可以遵循下面的步驟:

create-react-app 建立的專案樣板,把所有的設定檔案都包在 node_modules/react-scripts 中,因此要先執行 eject 把設定檔案彈出。

npm run eject

彈出後可以在 config/jest 資料夾中找到 webpack.config.js 檔案,打開該檔案找到 cssRegex 部分,並作如下設定:

{
  test: cssRegex,
  exclude: cssModuleRegex,
  use: getStyleLoaders({
    importLoaders: 1,
    modules: true,
    localIdentName: '[name]__[local]__[hash:base64:5]'
  }),              
  sideEffects: true,
},

如此一來 webpack 在打包時就會根據正則設定將 class 名稱 hash 成獨一無二的字符串來避免 class 衝突的問題。

詳細的 CSS Module 使用觀念可以參考這些文章: