平时都是用命令行工具一键生成项目,没有机会使用webpack从头至尾搭建项目。javascript
通过几天的学习,决定用webpack搭建一个React项目,并将搭建过程记录下来,与你们一块儿交流分享。菜鸡一枚,若是那里有错误,但愿你们帮忙指出。css
本篇文章会被分红三章,每一章都有一个主题。html
项目代码 Github 仓库java
mkdir diy-webpack-for-react
cd diy-webpack-for-react
npm init -y
复制代码
添加.gitignore
文件node
node_modules
/dist
.idea
.vscode
复制代码
初始化git仓库react
git init
复制代码
npm i webpack webpack-cli -D
复制代码
webpack.config.js
entry
)output
)loader
HtmlWebpackPlugin
将打包后的js入口文件的脚本注入到html模板中webpack.config.js
代码const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
// 设置为生产(production)模式
// 生产模式默认会将js代码压缩
// 若是你好奇打包后的文件长什么样
// 能够将mode设置为"development",将devtool设为"none"
mode: "production",
// 设置入口文件
entry: "./src/index.js",
output: {
// 设置出口文件名
filename: "main.js",
// 设置出口文件的目录
path: path.resolve(__dirname, "dist"),
publicPath: "/"
},
resolve: {
// 设置扩展,这样导入文件时能够省去写扩展名
extensions: [".js", ".json", ".jsx"]
},
module: {
rules: [
{
// 对".js"或".jsx"结尾的文件使用babel-loader进行转译
// babel-loader的配置放到".babelrc"文件内
test: /\.jsx?$/,
use: "babel-loader"
},
{
// 对css文件前后使用css-loader和style-loader
// css-loader能够将导入项目的css变为js模块
// style-loader能够让页面打开时,利用js将css模块
// 内的样式注入到html头部的style标签内
test: /\.css$/,
use: ["style-loader", "css-loader"]
},
{
// 使用file-loader来加载图片文件
test: /\.(png|jpg|jpeg|svg|gif)$/,
use: "file-loader"
}
]
},
plugins: [
// 该插件能将生成的入口js文件注入到模板html内
new HtmlWebpackPlugin({
// 设置模板的路径
template: "./src/template.html",
// 设置favicon的路径
favicon: "./src/assets/favicon-32x32-next.png"
})
]
};
复制代码
.babelrc
咱们须要配置.babelrc
文件,来告诉babel咱们要使用的presets。webpack
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
复制代码
在npm内添加如下脚本,方便开发使用git
// ...
"scripts": {
"build": "webpack --config webpack.config.js",
"serve:dist": "npx http-server-spa ./dist"
}
// ...
复制代码
使用 npm run build
,打包项目。使用npm run serve:dist
,将打包后的文件跑起来。github
一个简单的webpack配置完成了。web
安装react和react-dom就能够开始写代码了。
npm i react react-dom
复制代码
下一章节内容:将配置文件拆分为webpack.common.js
webpack.dev.js
webpack.prod.js
来针对不一样的场景;使用webpack-dev-server
启动开发服务器;优化生产环境的打包文件。