亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

詳解使用create-react-app添加css modules、sasss和antd

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

create-react-app 是facebook的官方腳手架,對于個人開發者和中小型公司快速創建項目非常推薦。react的CSS解決方案有很多,這里我技術選型時用 css modules 和 sass ,然后配合antd使用通用組件庫。但是create-react-app原生并不支持 css modules 和 sass ,所以需要額外配置。

配置

增加css modules和sass

使用eject暴露配置

create-react-app 默認是沒有暴露 webpack 配置的,所以需要eject一下。注意如果項目在git倉庫環境下,先提交代碼到git倉庫,否則會報錯

npm run eject

npm添加css modules和sass

npm install react-css-modules npm install sass-loader node-sass

這里安裝sass可能會遇到墻的問題報錯,所以要么使用cnpm或者使用本地代理設置,因為我有ss所以使用本地代理

// 開啟代理npm config set proxy http://127.0.0.1:1080// 安裝完sass后關閉代理npm config delete proxy

webpack配置

重點來了,我們需要給 webpack 配置上 css-modules 和 sass-loader 。但是使用 css-modules 會使 node_modules 庫里的css樣式找不到,比如后面要使用到的antd,這個時候我們需要inclube來排除影響 node_modules ,使得 css-modules 不會影響到 node_modules

修改項目中 config 目錄下的 webpack.config.dev.js 和 webpack.config.prod.js ,說明下這兩個文件,前一個是開發環境 npm start 使用,后一個是 npm run build 打包后使用

修改 webpack.config.dev.js :

大約在160行左右,找到 test: //.css$/ ,中文注釋的地方就是修改和增加的地方

{      test: [//.css$/, //.scss$/],// 這里增加SCSS的支持      exclude: [/node_modules/],// 這里去排除node_modules,防止css modules影響到node_modules      use: [       require.resolve('style-loader'),       {        loader: require.resolve('css-loader'),        options: {         importLoaders: 1,         modules: true, // 這里增加對css modules的支持         localIdentName: '[name]__[local]__[hash:base64:5]' //這里增加對css modules的支持        },       },       {        loader: require.resolve('sass-loader'), // 這里增加sass的支持       },       {        loader: require.resolve('postcss-loader'),        options: {         // Necessary for external CSS imports to work         // https://github.com/facebookincubator/create-react-app/issues/2677         ident: 'postcss',         plugins: () => [          require('postcss-flexbugs-fixes'),          autoprefixer({           browsers: [            '>1%',            'last 4 versions',            'Firefox ESR',            'not ie < 9', // React doesn't support IE8 anyway           ],           flexbox: 'no-2009',          }),         ],        },       },      ],     },     // 因為上面排除了css_modules所以這里一定要再添加個排除src來識別css_modules     // 其實就是復制之前沒修改前的所有,再增加一個exclude: [/src/]     {      test: //.css$/,       exclude: [/src/], // 這里添加排除src,      use: [       require.resolve('style-loader'),       {        loader: require.resolve('css-loader'),        options: {         importLoaders: 1,        },       },       {        loader: require.resolve('postcss-loader'),        options: {         // Necessary for external CSS imports to work         // https://github.com/facebookincubator/create-react-app/issues/2677         ident: 'postcss',         plugins: () => [          require('postcss-flexbugs-fixes'),          autoprefixer({           browsers: [            '>1%',            'last 4 versions',            'Firefox ESR',            'not ie < 9', // React doesn't support IE8 anyway           ],           flexbox: 'no-2009',          }),         ],        },       },      ],     }

修改 webpack.config.prod.js :

和上面修改 webpack.config.dev.js 類似

{      test: [//.css$/, //.scss$/], // 這里增加SCSS的支持      exclude: [/node_modules/], // 這里去排除node_modules      loader: ExtractTextPlugin.extract(       Object.assign(        {         fallback: {          loader: require.resolve('style-loader'),          options: {           hmr: false,          },         },         use: [          {           loader: require.resolve('css-loader'),           options: {            importLoaders: 1,            minimize: true,            sourceMap: true,            modules: true, // 這里添加css modules支持           },          },          {           loader: require.resolve('postcss-loader'),           options: {            // Necessary for external CSS imports to work            // https://github.com/facebookincubator/create-react-app/issues/2677            ident: 'postcss',            plugins: () => [             require('postcss-flexbugs-fixes'),             autoprefixer({              browsers: [               '>1%',               'last 4 versions',               'Firefox ESR',               'not ie < 9', // React doesn't support IE8 anyway              ],              flexbox: 'no-2009',             }),            ],           },          },          {           loader: require.resolve('sass-loader'), // 這里添加sass支持          }         ],        },        extractTextPluginOptions       )      ),      // Note: this won't work without `new ExtractTextPlugin()` in `plugins`.     },     {      test: //.css$/,      exclude: [/src/], // 排除src      loader: ExtractTextPlugin.extract(       Object.assign(        {         fallback: {          loader: require.resolve('style-loader'),          options: {           hmr: false,          },         },         use: [          {           loader: require.resolve('css-loader'),           options: {            importLoaders: 1,            minimize: true,            sourceMap: true,           },          },          {           loader: require.resolve('postcss-loader'),           options: {            // Necessary for external CSS imports to work            // https://github.com/facebookincubator/create-react-app/issues/2677            ident: 'postcss',            plugins: () => [             require('postcss-flexbugs-fixes'),             autoprefixer({              browsers: [               '>1%',               'last 4 versions',               'Firefox ESR',               'not ie < 9', // React doesn't support IE8 anyway              ],              flexbox: 'no-2009',             }),            ],           },          }         ],        },        extractTextPluginOptions       )      ),      // Note: this won't work without `new ExtractTextPlugin()` in `plugins`.     }

安裝antd和配置

主要是安裝配置 antd 和 babel-plugin-import ,這樣可以使得 antd 按需加載樣式

npm添加antd和babel-plugin-import

npm install antdnpm install babel-plugin-import

配置babel

在項目根目錄下增加 .babelrc 文件,然后配置如下

{ "presets": [  "react-app" ], "plugins": [  "transform-runtime",  [   "import",   {    "libraryName": "antd",    "style": "css"   }  ] ]}

大功告成

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本色道久久88精品综合| 欧美性少妇18aaaa视频| 日韩精品在线视频观看| 91精品国产色综合久久不卡98| 精品免费在线观看| 日韩欧美视频一区二区三区| 亚洲级视频在线观看免费1级| 午夜精品久久17c| 国产精品男人爽免费视频1| 夜夜嗨av一区二区三区四区| 欧美国产日韩精品| 日韩视频第一页| 国产97在线观看| 国产成人综合精品| 日韩在线免费高清视频| 国产日韩欧美视频| 91色p视频在线| 亚洲男人天堂久| 国产精品欧美日韩一区二区| 国产91成人video| 欧美大人香蕉在线| 久久亚洲春色中文字幕| 亚洲成年人在线| 欧美壮男野外gaytube| 精品久久久久久中文字幕一区奶水| 色婷婷综合久久久久| 国产精品∨欧美精品v日韩精品| 国产欧美最新羞羞视频在线观看| 中文字幕久久亚洲| 亚洲欧洲一区二区三区在线观看| 久久亚洲综合国产精品99麻豆精品福利| 亚洲女性裸体视频| 疯狂蹂躏欧美一区二区精品| 夜色77av精品影院| 久久免费观看视频| www日韩欧美| 日韩在线观看你懂的| 亚洲精品网站在线播放gif| 亚洲韩国欧洲国产日产av| 国产精品美乳一区二区免费| 欧美精品在线免费播放| 亚洲欧美在线免费观看| 欧美激情区在线播放| www.国产精品一二区| 正在播放国产一区| 激情懂色av一区av二区av| 欧美激情二区三区| 国产一区二区三区高清在线观看| 中文字幕欧美精品日韩中文字幕| 97免费视频在线播放| 色老头一区二区三区在线观看| 韩国三级日本三级少妇99| 欧美大荫蒂xxx| 国产精品久久久久久久美男| 国产一区二区三区免费视频| www.99久久热国产日韩欧美.com| 日韩欧美亚洲综合| 亚洲天堂第二页| 精品日本美女福利在线观看| 日韩精品免费在线播放| 曰本色欧美视频在线| 免费97视频在线精品国自产拍| 日韩一区二区三区国产| 欧美丝袜一区二区三区| 亚洲激情视频在线播放| 成人免费视频网址| 亚洲成色777777女色窝| 久热精品视频在线免费观看| 日韩中文字幕网站| 国产专区精品视频| 庆余年2免费日韩剧观看大牛| 久久人人97超碰精品888| 一区二区三区精品99久久| 日产精品99久久久久久| 精品久久久精品| 欧美电影免费观看网站| 亚洲男人天堂2019| 国产亚洲激情在线| 亚洲国产三级网| 51ⅴ精品国产91久久久久久| 久久久国产精彩视频美女艺术照福利| 91超碰中文字幕久久精品| 久久久999精品免费| 97超级碰碰碰久久久| 欧美一级电影在线| 久久久久久18| 亚洲免费视频在线观看| 亚洲精品一区久久久久久| 国内精品模特av私拍在线观看| 国产精品久久久久久久久久久久久久| 国产亚洲精品高潮| 97免费视频在线播放| 精品动漫一区二区三区| 欧美在线视频播放| 日韩精品免费在线观看| 尤物九九久久国产精品的分类| 久久久久久久久久久国产| 国产69精品久久久久9999| 久久综合伊人77777尤物| 91av在线免费观看视频| 亚洲精品日产aⅴ| 亚洲香蕉av在线一区二区三区| 国精产品一区一区三区有限在线| 最新亚洲国产精品| 成人国产亚洲精品a区天堂华泰| 欧美精品在线网站| 精品一区二区亚洲| 欲色天天网综合久久| 国产视频观看一区| 久久男人的天堂| 精品女同一区二区三区在线播放| 欧美日韩精品二区| 久久中文久久字幕| 亚洲片在线资源| 国外成人性视频| 国产美女精彩久久| 最近2019中文字幕大全第二页| 亚洲一区制服诱惑| 亚洲成色999久久网站| 久久人人爽亚洲精品天堂| 人人爽久久涩噜噜噜网站| 97在线观看免费高清| 欧美尤物巨大精品爽| 中文字幕日韩精品在线| 麻豆国产va免费精品高清在线| 欧美日韩一区二区免费在线观看| 91影院在线免费观看视频| 国产精品久久久久久久久久久新郎| 亚洲天堂2020| 午夜免费在线观看精品视频| 欧美成人免费大片| 国产精品一区二区久久| 九九九热精品免费视频观看网站| 欧美最猛性xxxxx免费| 亚洲天堂av电影| 国产97人人超碰caoprom| 91在线视频精品| 欧美性猛交xxxx乱大交| 国产精品va在线播放| 亚洲激情视频在线| 国产精品丝袜一区二区三区| 亚洲国产成人av在线| 日韩av在线高清| 热久久免费视频精品| 亚洲国产精品成人va在线观看| 成人免费在线视频网址| 91av福利视频| 欧美激情精品久久久久久变态| 欧美极品在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 中文字幕一区二区精品| 97在线观看免费高清| 2019中文字幕免费视频| 亚洲人在线观看| 日韩在线观看电影| 国产精品久久久久久久久久久不卡| 欧美高跟鞋交xxxxhd| 久久久久久久国产| 久久综合九色九九| 日韩有码视频在线| 欧美日韩中文字幕在线| 久热精品视频在线观看一区| 日韩欧美在线字幕| 日本精品性网站在线观看|