Webpack开发服务器-在多个端口上运行多个应用

Nir*_*air 4 reactjs webpack webpack-dev-server

目前,我运行的两个应用程序位于同一仓库中。

在第一个运行/和另一个port 3000(不同的HTML文件)。

我想制作另一个可以运行的应用程序port 5000(带有自己的HTML文件)。

我怎样才能做到这一点?

这是我的Webpack配置:

   entry: {

       mainApp: "./MainApp.js",
       appNumberTwo: "./AppNumberTwo.js"
   }, 

  devServer: {
    port: 3000,
    host: '0.0.0.0',
    headers: {
        "Access-Control-Allow-Origin": "*"
    },
    historyApiFallback: {
        index: publicPath + 'app_number_2.html',
    },
    proxy: [{
        target: "http://www.dev.mydomain.com"
    }]
},
Run Code Online (Sandbox Code Playgroud)

Anu*_*thi 5

这是执行此操作的一种方法。您可以尝试使用多个这样的编译器,

//webpack.config.js
[{
    entry: "./entry1.js",
    output: {
        filename: "outpu1.js"
    }
}, {
    entry: "./entry2.js",
    output: {
        filename: "outpu2.js"
    }
}]
Run Code Online (Sandbox Code Playgroud)

然后创建一个这样的节点脚本,

const WebpackDevServer = require("webpack-dev-server")
const webpack = require("webpack")
const config = require("./webpack.config")

const compiler = webpack(config)

const server1 = new WebpackDevServer(compiler.compilers[0], {
    contentBase: __dirname,
    hot: true,
    historyApiFallback: false,
    compress: true,
})

const server2 = new WebpackDevServer(compiler.compilers[1], {
    contentBase: __dirname,
    hot: true,
    historyApiFallback: false,
    compress: true,
})

server1.listen(3000, "localhost", function() {})
server2.listen(5000, "localhost", function() {})
Run Code Online (Sandbox Code Playgroud)

webpack-dev-server为每个创建一个实例compiler

您可以执行此操作的另一种方法是在package.json中编写多个脚本,如下所示:

{
   "scripts":{
       "serve1": "webpack-dev-server --content-base <file/directory/url/port> --port 3000",
       "serve2": "webpack-dev-server --content-base <file/directory/url/port> --port 5000"
   }
}
Run Code Online (Sandbox Code Playgroud)

然后使用npm-run-all,运行两个脚本

npm-run-all serve1 serve2
Run Code Online (Sandbox Code Playgroud)