一、项目创建

1、新建一个项目文件夹,打开终端,切换到到项目目录下:

npm init -y

这时候使用webstorm等高级的编辑器打开项目执行下面步骤效果会更直观。

2、新建一个文件夹public,在文件夹内创建index.html文件,添加:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div id="root"></div>
</body>
</html>

3、新建一个文件src/index.js,暂时先不写内容。

二、打包依赖配置

1、添加webpack

yarn add webpack webpack-cli --dev

webpack:打包依赖
webpack-cli:打包命令的协议

2、配置babel

yarn add babel-loader @babel/core @babel/preset-env --dev

babel-loader、@babel/core、@babel/preset-env:babel-loader的核心支持库

三、打包配置文件

1、在项目的根目录下新建webpack.config.js文件夹,配置打包模块。

const path = require('path');module.exports = {//打包环境,测试环境还是生产环境,不添加会报警告mode: 'development',//相对路径entry: {app: './src/index.js'},//输出配置output: {//输出在项目根目录的dist文件夹,会自动创建path: path.resolve(__dirname, './dist'),//js的文件名称filename: '[name].bundle.js',}
}

2、执行命令

yarn run webpack

会生成一个文件夹dist,包含一个app.bundle.js空的文件,这样说明初步就配置成功。

四、配置html-webpack-plugin

yarn add html-webpack-plugin --dev

webpack.config.js配置插件:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')module.exports = {mode: 'development',entry: {app: './src/index.js'},output: {path: path.resolve(__dirname, './dist'),filename: '[name].bundle.js',},plugins: [new HtmlWebpackPlugin({//模板路径,注意需要和index.html路径对应template: path.resolve(__dirname, './public/index.html'),//文件名称filename: 'index.html',})]
}

再次执行:

yarn run webpack

会在dist文件夹下生成app.bundle.js和index.html,并且自动添加了<script defer src="app.bundle.js"></script>。

五、配置其他webpack插件

每次打包都会生成dist文件夹,有的可能不需要,就需要在打包前清理,每次手动清理太麻烦,添加插件自动清理,有时候还需要检查错误,有需要error插件。

yarn add clean-webpack-plugin friendly-errors-webpack-plugin --dev

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
const friendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');module.exports = {……省略……plugins: [new HtmlWebpackPlugin({template: path.resolve(__dirname, './public/index.html'),filename: 'index.html',}),new CleanWebpackPlugin(),new friendlyErrorsWebpackPlugin(),]
}

六、支持jsx语法

1、添加React支持

yarn add react react-dom

2、添加jsx的babel

yarn add @babel/preset-react --dev

3、配置webpack.config.js

module.exports = {……省略……module: {rules: [{test: /\.(js|jsx)$/,loader: 'babel-loader',exclude: /node_modules/}],}
}

4、根目录下新建.babelrc文件,添加:

{"presets": ["@babel/preset-react","@babel/preset-env"]
}

5、在src/index.js下添加

import React from 'react'
import ReactDOM from 'react-dom'
import App from "./App";ReactDOM.render(<App />,document.getElementById('root')
)

再次执行:

yarn run webpack

预览dist/index.html显示内容,说明就集成成功。

七、实时预览

每次预览都需要yarn run webpack太麻烦,需要配置service自动加载。

1、添加

yarn add webpack-dev-server --dev

2、配置

module.exports = {……省略……devServer: {static: {directory: path.join(__dirname, './dist'),},compress: true,port: 3100,}
}

4、开启端口监听

yarn run webpack serve

访问http://localhost:3100/会显示预览内容,修改index.js内容并保存,会实时更新。

八、配置scripts

在package.json添加:


"scripts": {"build": "webpack","start": "webpack serve"
}

运行:

yarn start:开启服务
yarn build:重新打包

九、项目结构

1、package.json:

{"homepage": "./","name": "comments-app","version": "1.0.0","description": "","main": "index.js","scripts": {"build": "webpack","start": "webpack serve"},"author": "","license": "ISC","dependencies": {"react": "^17.0.2","react-dom": "^17.0.2"},"devDependencies": {"@babel/core": "^7.17.5","@babel/preset-env": "^7.16.11","@babel/preset-react": "^7.16.7","babel-loader": "^8.2.3","clean-webpack-plugin": "^4.0.0","css-loader": "^6.7.0","file-loader": "^6.2.0","friendly-errors-webpack-plugin": "^1.7.0","html-webpack-plugin": "^5.5.0","sass-loader": "^12.6.0","style-loader": "^3.3.1","url-loader": "^4.1.1","webpack": "^5.70.0","webpack-cli": "^4.9.2","webpack-dev-server": "^4.7.4","webpack-merge": "^5.8.0"}
}

2、项目结构如下:

3、下载地址:

https://download.csdn.net/download/yoonerloop/83976375

React 使用webpack打包相关推荐

  1. [react] 使用webpack打包React项目,怎么减小生成的js大小?

    [react] 使用webpack打包React项目,怎么减小生成的js大小? 打包优化的问题解决思路: 代码压缩:UglifyjsWebpackPlugin 代码分组 commonsChunkPlu ...

  2. 使用express、react、webpack打包、socket.io、mongodb、ant.design、less、es6实现聊天室

    拿到一个项目,我们应该如何去完成这个项目呢. 是直接上手? 还是先进行分析,然后再去解决呢?毫无疑问,如果直接上手解决,那么可能会因为知道目标所在,而导致出现各种问题. 所以,我们应该系统的分析这个项 ...

  3. react 使用webpack打包问题汇总

    一.TypeError: src\foo.js: Cannot read property 'bindings' of null 问题原因: 1.babel-loader一系列包的版本不兼容有冲突,需 ...

  4. nodejs+react使用webpack打包时控制台报错

    一.错误:Uncaught ReferenceError: process is not defined 解决方法: new webpack.DefinePlugin({'process.env': ...

  5. webpack打包后引用cdn的js_利用CDN加速react webpack打包后的文件详解

    此文不介绍webpack基本配置,如果对基本配置有疑问请查阅官方文档. 1.配置webpack.config.js 将output.publicPath改成上传到的cdn地址, 例(对应上面上传配置) ...

  6. React基础篇(三)之 webpack打包项目配制

    1.本篇章配置一个 webpack 打包项目 2.简述 jsx 语法配置支持 1 初始化项目 使用 IDE 打开目录 在命令行中初化化项目 npm init -y 然后安装 webpack cnpm ...

  7. webpack打包HTML配置自动,十三、HtmlWebpackPlugin的使用 ------- 2019-04-25

    一.作用:htmlWebpackPlugin插件会在webpack打包结束后,自动帮我们生成一个HTML文件,并把打包生成的js自动引入到这个HTML文件中: 二.安装 :npm install ht ...

  8. webpack打包优化_前端性能优化:webpack性能调优与Gzip原理

    链接:https://juejin.im/book/5b936540f265da0a9624b04b 从输入 URL 到显示页面这个过程中,涉及到网络层面的,有三个主要过程: DNS 解析 TCP 连 ...

  9. 轻松入门React和Webpack

    2019独角兽企业重金招聘Python工程师标准>>> 最近在学习React.js,之前都是直接用最原生的方式去写React代码,发现组织起来特别麻烦,之前听人说用Webpack组织 ...

最新文章

  1. Linux ext3grep 恢复数据
  2. int *ptr=(int *)(a+1)
  3. Java冒泡实现类Collections.sort()
  4. Cascader 级联选择器
  5. 用计算机计算性别,2018预测生男生女计算器 超准的怀孕计算器查生男生女
  6. 计算机系统遵循,自考《计算机系统结构》第10章精讲
  7. jenkins java常用插件下载,Jenkins简单介绍以及插件入门
  8. 阿里巴巴叔同谈云原生和云计算
  9. [译]CSV 注入:被人低估的巨大风险
  10. 会议指南二维码生成_包装和准备技术会议的指南
  11. hiveserver2启动不起来_汽车一键启动除了点火,还有这些功能!车主:现在才明白...
  12. 计算机专业c语言讲解,1计算机科学与技术专业本科C语言程序设计期末复习题1讲解.doc...
  13. 「干货分享」50人+团队常用的一套PRD模板
  14. 如何在VS2013中配置一个DirectX开发环境
  15. MySQL 清除表空间碎片
  16. 策略篇--量化投资之双均线策略
  17. vue删除数据,不刷新页面
  18. Sentry 前端日志上报使用
  19. Mac 搭建Appium自动化测试环境
  20. 操作系统,Ubuntu虚拟机编译裁剪内核

热门文章

  1. dubbo 支持的7种协议
  2. oracle asm中candidate,【Oracle ASM】关于asm实例与db实例中的磁盘状态_详细分析过程...
  3. SDUTOJ 2784 - Good Luck!
  4. 计算机网络安全管理的主要功能,网络安全管理有哪些功能
  5. Redis(8)——发布/订阅与Stream
  6. 研发团队使用的管理平台对比
  7. ykhmi是什么触摸屏软件_深圳市人机界面寸触摸屏厂家
  8. 使用C语言访问MySQL数据库基础
  9. 【MySQL】MySQL之示例数据库Sakila下载及安装
  10. 红帽Linux8.0 14安装和更新软件包