搭建React开发环境-webpack实现

周末在家学会React前端知识,记录下来,方便备查。

webpack版本:webpack5

编译器:vscode

第一步、新建项目及初始化

1)新建项目文件夹

可命名为 my_webpack
2)初始化项目

使用命令 npm init -y,即可生成 package.json 文件夹,如下图所示。

第二步、安装插件

1)安装react 插件

执行命令 npm i --save react react-dom 执行完毕后,在目录下会生成 node_modules 文件夹package_lock.json文件,如下图所示。


2)安装 webpack 插件

执行命令 npm i -D webpack webpack-cli,安装如下图所示。

新建 webpack配置文件 ,命名为 webpack.config.js

3)安装babel插件

执行命令 npm i -D babel-loader @babel/core @babel/preset-react @babel/preset-env,并在 webpack.config.js 文件module中设置规则,如下图所示。

4)安装html-webpack-plugin插件

为实现在index.html 中自动引入 hash后的js文件

执行命令npm i -D html-webpack-plugin,并在 webpack.config.js 中引入。

javascript 复制代码
const HtmlWebpackPlugin = require('html-webpack-plugin');

// webpack.config.js 中添加以下内容
plugins:[
        new HtmlWebpackPlugin(
            {
                template: './src/index.html'
            }
        )
    ]
第三步、主体各个文件

项目目录如下图所示。

项目主要由以下几部分组成

dist 文件为 build 生成的js 和html

node_modules文件 为下载的依赖

public文件 为公共的 index文件

src文件 为jsx css等文件

以下分别是各个文件的内容
package.json

javascript 复制代码
// package.json 文件内容,主要为自动生成
{
  "name": "my_webpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "prebuild":"rimraf ./dist",
    "build": "webpack --config ./webpack.config.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  },
  "devDependencies": {
    "@babel/core": "^7.23.7",
    "@babel/preset-env": "^7.23.7",
    "@babel/preset-react": "^7.23.3",
    "babel-loader": "^9.1.3",
    "webpack": "^5.89.0",
    "webpack-cli": "^5.1.4",
    "webpack-dev-server": "^4.15.1"
  }
}

webpack.config.js

javascript 复制代码
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports={
    // 环境
    mode:'development',
    // 入口
    entry:'./src/index.jsx',
    // 输出文件配置信息
    output: {
        // 文件名添加哈希
        filename : 'bundle.[hash].js',
        // 指定文件目录
        path: path.resolve(__dirname,'dist')
    },
    resolve:{
        // 指定解析文件的格式
        extensions:['.jsx','...']
    },
    module:{
        // 设置规则,不同的加载器
        rules:[
            {
                test: /\.jsx$/,
                use:{
                    loader : 'babel-loader',
                    // preset-env处理浏览器新的规则
                    options: {
                        presets:['@babel/preset-react','@babel/preset-env']
                    }
                }
            },
            {
                test:/\.css$/,
                use:['style-loader','css-loader']
            }
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template: './public/index.html'
            })
    ]
}
第四步、运行

执行编译命令 ==npm run build ==,检查配置并运行。

在浏览器中输入 http://localhost:8080/ 即可查看效果。

1)安装 rimraf 插件

为保证每次执行前,删除之前生成的文件,可执行命令npm -i -D rimraf,在 package.json 文件中添加 prebuild ,即在build前执行。

javascript 复制代码
  "scripts": {
    "prebuild":"rimraf ./dist",
    "build": "webpack --config ./webpack.config.js"
  }

2)更改自动刷新

安装webpack-dev-server插件,可执行命令npm i -D webpack-dev-server

异常处理

【1】npm版本

报错:This is probably not a problem with npm. There is likely additional logging output above

处理方案:

// 清除缓存

npm cache clear --force

// 重装npm

npm install
【2】变量输入错误

报错:Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.

configuration.output has an unknown property 'patch'. These properties are valid:

处理方案

变量path敲错了,写成了patch,改成path
【3】缺少插件

报错:Module not found: Error: Can't resolve 'style-loader' in 'D:\MyLean\my_webpack'

处理方案

安装插件,执行命令 npm install --save-dev style-loader

参考资料

【1】https://www.bilibili.com/video/BV1Lo4y1k73W

相关推荐
程序员爱技术1 小时前
Vue 2 + JavaScript + vue-count-to 集成案例
前端·javascript·vue.js
并不会2 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
衣乌安、2 小时前
【CSS】居中样式
前端·css·css3
兔老大的胡萝卜2 小时前
ppk谈JavaScript,悟透JavaScript,精通CSS高级Web,JavaScript DOM编程艺术,高性能JavaScript pdf
前端·javascript
低代码布道师2 小时前
CSS的三个重点
前端·css
耶啵奶膘4 小时前
uniapp-是否删除
linux·前端·uni-app
王哈哈^_^5 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie6 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic6 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿7 小时前
webWorker基本用法
前端·javascript·vue.js