1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > React 使用webpack打包

React 使用webpack打包

时间:2020-11-11 01:25:17

相关推荐

React 使用webpack打包

一、项目创建

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、下载地址:

/download/yoonerloop/83976375

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。