打开自定义配置选项
yarn eject
//Are you sure you want to eject? This action is permanent. (y/N)
y
复制代码
修改配置
配置使用scss
- 修改
config
文件夹的webpack.config.dev.js
和webpack.config.prod.js
test: /\.css$/ 变成 test: /\.s?css$/
{loader: require.resolve('sass-loader')}
复制代码
yarn add node-sass sass-loader -D
复制代码
安装postCss插件
yarn add postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano -D
复制代码
配置postcss
- 在
webpack.config.dev.js
和webpack.config.prod.js
文件中进行以下修改
// 引入
const postcssAspectRatioMini = require('postcss-aspect-ratio-mini');
const postcssPxToViewport = require('postcss-px-to-viewport');
const postcssWriteSvg = require('postcss-write-svg');
const postcssCssnext = require('postcss-cssnext');
const postcssViewportUnits = require('postcss-viewport-units');
const cssnano = require('cssnano');
// 使用
{
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', }), postcssAspectRatioMini({}), // 用来处理元素容器宽高比 postcssWriteSvg({ // 用来处理移动端1px的解决方案 utf8: false, }), postcssCssnext({}), // 让项目使用CSS将来特性 并对其作兼容性处理 postcssPxToViewport({ viewportWidth: 375, // 视窗的宽度,对应咱们设计稿的宽度,通常是750 viewportHeight: 667, // 视窗的高度,根据750设备的宽度来指定,通常指定1334,也能够不配置 unitPrecision: 3, // 指定'px'转换为视窗单位值得小数位数(不少时候没法整除) viewportUnit: 'vw', // 指定须要转换成的视窗单位,建议使用vw selectorBlackList: [ '.ignore', '.hairliness', ], // 指定不转换为视窗单位的类,能够自定义,能够无限添加,建议定义一至两个通用的类名 minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也能够设置为你想要的值。 mediaQuery: false, // 容许在媒体查询中转换`px` }), postcssViewportUnits({}), // 给CSS的属性添加content的属性 配合viewport-units-buggyfill解决个别手机不支持vw cssnano({ // 压缩和清理CSS代码 autoprefixer: false, 'postcss-zindex': false, }), ], }, }, 复制代码
VW兼容方案