webpack搭建react开发环境流程
webpack搭建react开发环境流程
1. 初始化项目 yarn init
2. 安装webpack yarn add webpack --dev
3. 创建webpack.config.js 文件
4. 将webpack官网的入口entry粘贴进配置文件
5. 创建src目录,新建app.js入口文件
6. 执行.\node_modules\.bin\webpack 会将app.js文件打包到dist目录下。
需要安装的包:
1. 打包Html文件,使用HtmlWebpackPlugin,(因为默认的index.html文件缺少一些配置,可以自定义模板,参考HtmlWebpackPlugin配置文档)
2. 支持es6语法和react,使用babel,
3. 需要安装react开发必须依赖,安装react和react-dom
4. 打包css文件,使用css-loader style-loader
5. 支将css文件打包成单独文件,使用ExtractTextWebpackPlugin
6. 支持scss格式的样式,使用sass loader、node-sass
7. 支持加载图片,使用file loader,我们使用file loader 的封装 url loader
8. 引入字体文件,使用font-awesome
9. webpack实时加载,使用 webpack-dev-server
10. 在package.json中添加scripts简化命令
详细命令:
1. Yarn add html-webpack-plugin --dev
2. yarn add babel-loader @babel/core @babel/preset-env @babel/preset-react --dev
3. yarn add react react-dom
4. yarn add css-loader style-loader --dev
5. yarn add extract-text-webpack-plugin@next --dev
6. Yarn add sass-loader node-sass --dev
7. Yarn add file-loader url-loader --dev
8. 直接在html文件header中引入 <link href="http://cdn.bootcss.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
9. Yarn add webpack-dev-server --dev
10. 命令如下:配置完后就可以直接执行yarn run dev (运行编译打包实时更新)、yarn run dist(手动打包),就不用那么打一大串那么麻烦了。
"scripts": { "dev": "node_modules/.bin/webpack-dev-server", "dist": "node_modules/.bin/webpack -p" },
配置完成后最终的webpack.config.js 文件
const path = require('path');
const webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
entry: './src/app.js', // entry : 入口文件
output: {
path: path.resolve(__dirname, 'dist'), // path : 打包输出到哪儿?
filename: 'js/app.js' // filename :打包后的文件名
},
module: {
// react文件的处理及打包
rules: [
{
test: /\.m?js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-react'] // jsx转为js函数
}
}
},
// css文件的处理
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
},
// sass文件的处理
{
test: /\.scss$/,
use: [
"style-loader", // 将 JS 字符串生成为 style 节点
"css-loader", // 将 CSS 转化成 CommonJS 模块
"sass-loader" // 将 Sass 编译成 CSS,默认使用 Node Sass
]
},
// 图片的配置
{
test: /\.(png|jpg|gif)$/i,
use: [
{
loader: 'url-loader',
options: {
limit: 8192, //文件大于8K的时候,单独将图片打包成文件。
name: 'resource/[name].[ext]'
},
},
],
},
//字体图标的配置
{
test: /\.(woff|woff2|svg|eot|ttf|otf)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192, //文件大于8K的时候,单独将图片打包成文件。
name: 'resource/[name].[ext]'
},
}
]
},
]
},
// 配置webpack实时重新加载
devServer: {
contentBase: './dist',
port: 8086 //启动端口,默认8080,最好修改一下。以防占用其他软件端口
},
plugins: [
// 处理html文件
new HtmlWebpackPlugin({
template: './src/index.html'
}),
// 处理独立css文件
new ExtractTextPlugin("css/[name].css"),
],
// 处理通用模块
optimization: {
splitChunks: {
cacheGroups: {
commons: {
name: "commons",
chunks: "initial",
minChunks: 2
}
}
}
},
};

浙公网安备 33010602011771号