webpack 搭建React(手动搭建)
前言
最近真的都是在瞎学,看到自己不是很明白的东西,都喜欢自己手动去敲1到3遍(晚上下班的时候咯),
瞧,React 基于webpack 搭建,react 官方有一套手脚架工具,我自己也搭建过确实挺好使的,适合初学者学习学习。
但是自己还是想手动来搭建,嗯 于是写一篇不用手脚架搭建的博客,供自己加强记忆,哈哈哈 开始咯
创建项目目录
新建 react-webpack 项目
cd react-webpack
初始化 npm 环境
npm init //一路回车
package.json 文件下 其实就是记录依赖相关的 加载库
{"name": "react-webpack",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "yf",
"license": "ISC"
}
依赖安装
npm i react -D
npm i react-dom -D
npm i webpack -D
npm i webpack-cli -D (因为webpak 到 4版本以上 就需要这个 ,不然会报错)
创建目录
创建 src ,build 2个目录
在 src 下创建 webpack 打包入口文件 index.js
在创建webpack 配置文件
const path = require('path') // 引入‘path’,为了在这里使用绝对路径,避免相对路径在不同系统时出现不必要的问题const publicPath = '/';
module.exports = {
// 应用入口
entry: {
app: path.join(__dirname, '../src/index.js') // index.js作为打包的入口
},
// 输出目录
output: {
filename: '[name].[hash:8].js',//name代表entry对应的名字; hash代表 整个app打包完成后根据内容加上hash。一旦整个文件内容变更,hash就会变化
path: path.join(__dirname, '../dist'), // 打包好之后的输出路径
publicPath: publicPath, //态资源文件引用时的路径
},
};
修改package.json 下
添加如下代码:
"build": "webpack --mode production"
需要引入 babel-loader 来编译 es6
npm i babel-core babel-loader babel-preset-env -D
npm install babel babel-cli -D
npm install babel-preset-react babel-preset-es2015 -D
{test: /\.(js|jsx)$/, //使用loader的目标文件。这里是.js
use: {
loader: 'babel-loader',
options: {
presets: ["env", "react"] //['@babel/preset-react']
},
},
exclude: [
path.join(__dirname, '../node_modules') // 由于node_modules都是编译过的文件,这里我们不让babel去处理其下面的js文件
]
},
在项目根目录下创建 babel 的配置文件 .babelrc
:
{"presets": [
["es2015", {"loose": true}],
"react"
]
}
执行 npm run build
你的第一个打包就在dist 文件下了
在使用 html-webpack-plugin
webpack 可以根据你的配置生成你想要的文件 html
npm i html-webpack-plugin - D
const HTMLPlugin = require('html-webpack-plugin')plugins: [
new HTMLPlugin({
filename: 'index.html', //制定的文件,默认
template:'index.html' //制定html生成使用的模板文件
}) // 生成一个html页面,同时在webpack编译的时候。把我们所生成的entry都注入到这个html页面中,路径都是根据我们output配置的来走的。
]
在 你的 index.html ,写这样
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app"></div>
</body>
</html>
写第一个 React 应用
import React from 'react';import ReactDOM from 'react-dom';
export default class HelloReact extends React.Component{
constructor(props) {
super(props);
}
render(){
return( <div>Hello React</div>);
}
}
ReactDOM.render(<HelloReact />, document.getElementById('app'));
development 模式下启动服务器并实时刷新 webpack-dev-server
npm i webpack-dev-server --save-dev
"start": "webpack-dev-server --mode development --open","build": "webpack --mode development --config build/webpack.config.js"
在index.js 文件下引入
<!DOCTYPE html><html lang="en">
<head>
<title>Hello React</title>
</head>
<body>
<div id="root"></div>
<script type="text/javascript" src="./main.e09b122c.js"></script>
</body>
</html>
然后再编译: npm run build
npm run start
用浏览器打开 //http://localhost:8080,就可以看到 Hello React
出现了
以上是 webpack 搭建React(手动搭建) 的全部内容, 来源链接: utcz.com/z/381141.html