• 自定义开发服务器_2_使用webpack_dev_middleware和express


    官网指南中讲解了如何使用webpack-dev-middleware和express配置自定义服务器,但没有热更新功能。

    在官网查找了一下,终于解决了这一问题:

    1,必备依赖插件,使用npm/yarn安装即可:(需单独安装webpack-hot-middleware)

    
    
      "dependencies": {
        "clean-webpack-plugin": "^3.0.0",
        "express": "^4.17.1",
        "html-webpack-plugin": "^4.5.0",
        "lodash": "^4.17.20",
        "webpack": "^5.10.0",
        "webpack-cli": "^4.2.0",
        "webpack-dev-middleware": "^4.0.2",
        "webpack-hot-middleware": "^2.25.0"
      }

    2,webpack.config.js配置:(热更新插件内置在webpack中,调用即可)

    const path = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const { CleanWebpackPlugin } = require('clean-webpack-plugin');
    const  webpack  = require('webpack');
    
    module.exports = {
        mode:'development',
        entry:[
            "./src/index.js","webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000&reload=true"
        ],
        plugins:[
            new CleanWebpackPlugin({cleanStaleWebpackAssets:false}),
            new HtmlWebpackPlugin({
                title:'Development',
            }),
            new webpack.HotModuleReplacementPlugin(),
            new webpack.NoEmitOnErrorsPlugin()
        ],
        output:{
            filename:'[name].bundle.js',
            path:path.resolve(__dirname,'dist'),
            publicPath:'/',
        },
    };

    3,server.js配置:

    const express = require('express');
    const webpack = require('webpack');
    const webpackDevMiddleware = require('webpack-dev-middleware');
    const webpackHotMiddleware = require('webpack-hot-middleware');
    
    const app = express();
    const config = require('./webpack.config');
    const compiler = webpack(config);
    
    app.use(
        webpackDevMiddleware(compiler, {
            publicPath:config.output.publicPath,
        })
    );
    app.use(
        webpackHotMiddleware(compiler, {
            path:'/__webpack_hmr',heartbeat:10 * 1000
        })
    )
    
    
    app.get("/",function(req,res){
        res.sendFile(__dirname + '/dist/index.html');
    });
    
    app.listen(3000, function () {
        console.log('Example app listening on port 3000!
    ');
      });
  • 相关阅读:
    JQuery -- this 和 $(this) 的区别
    js动态生成表格
    Sublime 3 如何使用列编辑模式
    新版Sublime text3注册码被移除的解决办法
    Sublime text 3 格式化HTML/css/js/json代码 插件
    mingw64 构建 Geos
    C++调用Python浅析
    linux下挂载VHD等虚拟磁盘文件
    linux 下Qt WebEngine 程序打包简单记录
    C++ UTF8和UTF16互转代码
  • 原文地址:https://www.cnblogs.com/sx00xs/p/14118918.html
Copyright © 2020-2023  润新知