React基础框架搭建10-webpack配置:react+router+redux+axios+Tailwind+webpack
webpack配置
npm install --save-dev webpack webpack-cli webpack-dev-server
npm install --save-dev babel-loader @babel/core @babel/preset-env @babel/preset-react
npm install --save-dev html-webpack-plugin clean-webpack-plugin
npm install --save-dev css-loader style-loader
npm install --save-dev file-loader url-loader
npm install --save-dev mini-css-extract-plugin
npm install --save-dev dotenv-webpack
在根目录创建webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const Dotenv = require('dotenv-webpack');
module.exports = {
mode: 'development', // 开发模式
entry: './src/index.js', // 入口文件
output: {
path: path.resolve(__dirname, 'dist'), // 输出目录
filename: 'bundle.js', // 输出文件名
publicPath: '/', // 公共路径
},
resolve: {
extensions: ['.js', '.jsx'], // 解析的文件扩展名
alias: {
'@': path.resolve(__dirname, 'src'), // 设置路径别名
},
},
module: {
rules: [
{
test: /\.(js|jsx)$/, // 处理 JavaScript 和 JSX 文件
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-react'], // Babel 配置
},
},
},
{
test: /\.css$/, // 处理 CSS 文件
use: ['style-loader', 'css-loader'],
},
{
test: /\.(png|jpg|gif|svg)$/, // 处理图片文件
use: [
{
loader: 'file-loader',
options: {
name: '[path][name].[ext]', // 保持原有路径和文件名
},
},
],
},
],
},
devServer: {
static: {
directory: path.join(__dirname, 'dist'), // 更新为 static
},
compress: true, // 启用 gzip 压缩
port: 3000, // 端口号
historyApiFallback: true, // 支持 HTML5 History API
},
plugins: [
new CleanWebpackPlugin(), // 清理输出目录
new HtmlWebpackPlugin({
template: './public/index.html', // HTML 模板
filename: 'index.html', // 输出的 HTML 文件名
}),
],
};
在 package.json 中添加 Webpack 的构建和开发脚本:
"scripts": {
"start": "webpack serve --open", // 启动开发服务器
"build": "webpack --mode production" // 构建生产版本
}