1、实现目标
- 加载图片;
- 加载字体;
- 加载 CSS;
- 使用 SASS;
- 使用 PostCSS,并自动为 CSS 规则添加前缀,解析最新的 CSS 语法,引入 css-modules 解决全局命名冲突问题;
- 使用 React;
- 使用 TypeScript;
2、进阶配置
2.1 加载图片(Image)
在 webpack 5之前使用:
webpack5之后使用:Assetmodules;
修改通用环境配置文件 webpack.commom.js:
const paths = require('./paths');module.exports = {module: {rules: [{test: /\.(png|svg|jpg|jpeg|gif)$/i,include: [paths.resolveApp('src'),,],type: 'asset/resource',},],},}
2.2 加载SASS
安装SASS相关依赖:
npm install --save-dev sass-loader sass
修改通用环境配置文件 webpack.commom.js:
{test: /.(scss|sass)$/,include: paths.appSrc,use: [// 将 JS 字符串生成为 style 节点'style-loader',// 将 CSS 转化成 CommonJS 模块'css-loader',// 将 Sass 编译成 CSS'sass-loader',],}
2.3 使用PostCSS
PostCSS是一个用 JavaScript 工具和插件转换 CSS 代码的工具;
- 可以自动为 CSS 规则添加前缀;
- 将最新的 CSS 语法转换成大多数浏览器都能理解的语法;
- css-modules 解决全局命名冲突问题。
postcss-loader使用 PostCSS处理 CSS 的 loader;
安装 PostCSS 相关依赖:
npm install --save-dev postcss-loader postcss postcss-preset-env
修改通用环境配置文件 webpack.commom.js:
{test: /\.module\.(scss|sass)$/,include: paths.appSrc,use: [// 将 JS 字符串生成为 style 节点'style-loader',// 将 CSS 转化成 CommonJS 模块{loader: 'css-loader',options: {modules: true,importLoaders: 2,},},// 将 PostCSS 编译成 CSS{loader: 'postcss-loader',options: {postcssOptions: {plugins: [[// postcss-preset-env 包含 autoprefixer'postcss-preset-env',],],},},},// 将 Sass 编译成 CSS'sass-loader',],}
2.4 使用 React + TypeScript
安装React相关和TypeScript:
为提高性能,选择最新的 esbuild-loader;
npm i react react-dom @types/react @types/react-dom -Dnpm i -D typescript esbuild-loader
加入TS配置tsconfig.json:
{"compilerOptions": {"outDir": "./dist/","noImplicitAny": true,"module": "es6","target": "es5","jsx": "react","allowJs": true,"moduleResolution": "node","allowSyntheticDefaultImports": true,"esModuleInterop": true,}}
修改通用环境配置文件 webpack.commom.js:
module.exports = {resolve: {extensions: ['.tsx', '.ts', '.js'],},module: {rules: [{test: /\.(js|ts|jsx|tsx)$/,include: paths.appSrc,use: [{loader: 'esbuild-loader',options: {loader: 'tsx',target: 'es2015',},}]},]}}
3、本节代码
代码地址:https://gitee.com/linhexs/webpack5/tree/3.practice-advanced/
