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

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仓库,否则会报错

rush:bash;"> npm run eject

npm添加css modules和sass

rush:bash;"> npm install react-css-modules npm install sass-loader node-sass

这里安装sass可能会遇到墙的问题报错,所以要么使用cnpm或者使用本地代理设置,因为我有ss所以使用本地代理

rush:bash;"> // 开启代理 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$/ ,中文注释的地方就是修改增加的地方

[ 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'),}

修改 webpack.config.prod.js :

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

[ require('postcss-flexbugs-fixes'),autoprefixer({ browsers: [ '>1%',// React doesn't support IE8 anyway ],{ loader: require.resolve('sass-loader'),// 这里添加sass支持 } ],extractTextPluginoptions ) ),// Note: this won't work without `new ExtractTextPlugin()` in `plugins`. },{ test: /\.css$/,// 排除src loader: ExtractTextPlugin.extract( Object.assign( { fallback: { loader: require.resolve('style-loader'),} ],// Note: this won't work without `new ExtractTextPlugin()` in `plugins`. }

安装antd和配置

主要是安装配置 antd 和 babel-plugin-import ,这样可以使得 antd 按需加载样式

npm添加antd和babel-plugin-import

rush:bash;"> npm install antd npm install babel-plugin-import

配置babel

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

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

大功告成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...