# webpack-react **Repository Path**: lv_yan-a/webpack-react ## Basic Information - **Project Name**: webpack-react - **Description**: webpack搭建react - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-07-11 - **Last Updated**: 2024-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: React, webpack, JavaScript, TypeScript, Ant-Design ## README ## 1. 初始化package.josn ``` npm install -y ``` ## 2. 安装webpack ``` yarn add webpack webpack-cli webpack-dev-server html-webpack-plugin ``` ## 3. 安装babel核心模块和babel预设 ``` yarn add babel-loader @babel/core @babel/preset-env @babel/preset-react @babel/plugin-transform-runtime -D ``` #### 1. babel-loader:这是一个Webpack加载器,用于将ES6+代码转换为向后兼容的JavaScript代码。它会将你的代码传递给Babel进行转译。 #### 2. @babel/core:这是Babel的核心库,它负责实际的代码转译工作。它将JavaScript代码解析成抽象语法树(AST),然后将其转换为兼容的代码。 #### 3. @babel/preset-env:这是Babel的预设之一,用于根据目标环境自动确定需要的转译插件。它根据你在配置文件中指定的目标环境(如浏览器版本)来选择适当的转译插件 #### 4. @babel/preset-react:这是Babel的另一个预设,用于将JSX语法转换为普通的JavaScript代码。它允许你在React项目中使用JSX语法。 #### 5. Babel将会使用 @babel/plugin-transform-runtime 插件来处理转换过程中的辅助函数,从而减小生成的代码体积。 ## 4. 安装react react-dom ``` yarn add react react-dom ``` ## 5. 创建项目文件结构 ``` - src |- index.js - public |- index.html ``` ## 6. 配置webpack ### 1. 在项目根目录下创建一个名为 webpack.config.js 的文件,并添加以下配置 ``` const { merge } = require("webpack-merge"); const baseConfig = require("./webpack.config.base.js"); const devConfig = require("./webpack.config.dev.js"); const prodConfig = require("./webpack.config.prod.js"); module.exports = (env, argv) => { console.log(env, argv); if (argv.mode === "development") { return merge(baseConfig, devConfig); } if (argv.mode === "production") { return merge(baseConfig, prodConfig); } // Add production config here if needed }; ``` ### 2. 在项目根目录下创建一个名为 webpack.config.base.js 的文件,并添加以下配置 ``` const HtmlWebpackPlugin = require("html-webpack-plugin"); const path = require("path"); module.exports = { entry: "./src/index.tsx", output: { filename: "main.js", path: path.resolve(__dirname, "dist"), }, plugins: [ new HtmlWebpackPlugin({ title: "My App", template: "./src/index.html", }), ], resolve: { // 配置别名 alias: { "@": path.resolve(__dirname, "src"), }, // 引入文件忽略文件扩展名 extensions: [".js", ".jsx", ".tsx", ".json"], }, module: { rules: [ { test: /\.(ts|tsx)$/, exclude: /node_modules/, use: { loader: "ts-loader", options: { transpileOnly: true, }, }, }, { test: /\.(jsx|tsx)?$/, exclude: /node_modules/, use: { loader: "babel-loader", options: { presets: ["@babel/preset-env", "@babel/preset-react","@babel/preset-typescript"], plugins: ["@babel/plugin-transform-runtime"], }, }, }, // 配置 sass-loader 和 css-loader 和 style-loader { test: /\.(css|scss)$/, use: [ "style-loader", { loader: "css-loader", options: { modules: true, }, }, "sass-loader", ], }, ], }, }; ``` ### 3. 在项目根目录下创建一个名为 webpack.config.dev.js 的文件,并添加以下配置 ``` const { merge } = require("webpack-merge"); const baseConfig = require("./webpack.config.base.js"); const path = require("path"); module.exports = { mode: "development", devtool: "inline-source-map", devServer: { static: path.join(__dirname, "dist"), compress: true, port: 9000, open: true, }, }; ``` ### 4. 在项目根目录下创建一个名为 webpack.config.prod.js 的文件,并添加以下配置 ``` const { merge } = require("webpack-merge"); const baseConfig = require("./webpack.config.base.js"); module.exports = module.exports = { mode: "production", devtool: "source-map", }; ``` ## 7. 使用sass ``` yarn add sass sass-loader style-loader css-loader -D ``` #### 配置文件 ``` module: { rules: [ // 配置 css-loader 和 style-loader { test: /\.css$/, use: [ "style-loader", { loader: "css-loader", options: { modules: true, }, }, ], }, // 配置 sass-loader 和 css-loader 和 style-loader { test: /\.scss$/, use: [ "style-loader", { loader: "css-loader", options: { modules: true, }, }, "sass-loader", ], }, ] ``` ## 8. 创建React组 在 src 文件夹中创建一个名为 index.js 的文件,并添加以下代码 ``` import React from 'react'; import ReactDOM from 'react-dom'; const App = () => { return