CSS3前缀自动补齐
- 先使用 postcss 
- 下载包
npm i postcss-loader postcss -D - 配合
autoprefixer或者postcss-preset-envnpm i autoprefixer -Dnpm i postcss-preset-env -D// package.json// 需要在这里面加需要兼容的浏览器。或者在根目录下创建.browserslistrc文件"browserslist": ["last 2 versions","> 1%","iOS >= 7","Android > 4.1","Firefox > 20"]
```javascript // webpack.config.js ‘use strict’; const path = require(‘path’); const MiniCssExtractPlugin = require(‘mini-css-extract-plugin’); const CssMinimizerPlugin = require(“css-minimizer-webpack-plugin”);// .broserslistrclast 2 version> 1%iOS >= 7Android > 4.1Firefox > 20
 
 - 下载包
 
module.exports = { module: { rules: [ { test: /.css$/, use: [ MiniCssExtractPlugin.loader, ‘css-loader’, { loader: ‘postcss-loader’, options: { // plugins其实可以写成[‘postcss-preset-env’]就好的 postcssOptions: { plugins: [[‘postcss-preset-env’]] }, } } ] }, ] }, plugins: [ new CssMinimizerPlugin(), ], }
- 根据`[Can I Use](https://caniuse.com)`规则,自动补齐的<a name="F9D4K"></a># 移动端CSS的px自动转rem- W3C对 rem 的定义:font-size of the root element- 使用:`px2rem-loader`- 下载包:`npm i px2rem-loader -D`- 页面渲染时计算根元素的font-size值- 可以使用淘宝的`lib-flexible`库- 下载包:`npm i lib-flexible -S`<a name="wcF4K"></a># 资源内联- 代码层面- 页面架构的初始化脚本- 上报相关打点- css内敛避免页面闪动- 请求层面:减少HTTP网络请求- 小图片或字体内联(url-loader)<a name="DRdyT"></a>## HTML和JS内联- raw-loader和html-loader都搞不成功,以后再来<a name="ZUcW7"></a>## CSS内联- 方案一:借助`style-loader````javascript// webpack.config.jsmodule.exports = {module: {rules: [{test: /\.css$/,use: [{loader: 'style-loader',options: {insertAt: 'top', // 样式插入到haedsingleton: true, // 所以style合并成一个}},'css-loader']}]}}
- 方案二:
html-inline-css-webpack-plugin 
eslint
- Airbnb:
eslint-config-airbnb、eslint-config-airbnb-base 腾讯内部的eslint
不重复造轮子,基于
eslint-recommentd配置并改进- 能够帮助发现代码错误的规则,全部开启
 - 帮助保持团队的代码风格哦那个一,而不是限制开发体验
 
eslint的落地
方案一:和CI/CD系统集成

本地开发阶段增加precommit钩子
使用eslint-loader,构建时检查JS规范
- 下载包
npm i eslint-loader babel-eslint- -Dnpm i eslint eslint-plugin-import -D- 如果使用react,还要安装
npm i eslint-plugin-react eslint-plugin-jsx-a11y -D - 如果使用react-hook,再装
npm i eslint-plugin-react-hook -D - 若使用了airebnb的规则,则下载包:
npm i eslint-config-airbnb -D 
 - eslint的配置文档
eslint的配置文件以及优先级
 
- 下载包
 配置文件
- JavaScript - 使用 
.eslintrc.js然后输出一个配置对象。 - YAML - 使用 
.eslintrc.yaml或 .eslintrc.yml 去定义配置的结构。 - JSON - 使用 
.eslintrc.json去定义配置的结构,ESLint 的 JSON 文件允许 JavaScript 风格的注释。 - (弃用) - 使用 
.eslintrc,可以使 JSON 也可以是 YAML。 - package.json - 在 
package.json里创建一个 eslintConfig属性,在那里定义你的配置。 
- JavaScript - 使用 
 优先级
下面这个可以打包,有react的js
- rules中更多的配置规则,见官网
{"eslintConfig": {"parser": "babel-eslint",// 要js能import,要加上下面这个"parserOptions": {"sourceType": "module"},"env": {"es6": true,"browser": true,"node": true},"rules": {"indent": [ "error", 2, { "SwitchCase" : 1 } ],"default-case": ["error"],"eqeqeq": ["warn"],"no-alert": ["error"],"no-console": ["warn"]}}}
 
