{"library":"razzle-start-server-webpack-plugin","title":"Webpack Start Server Plugin","description":"razzle-start-server-webpack-plugin is a utility designed to automatically start a Node.js server after Webpack completes its build process, primarily for server-side bundles in development. It also integrates seamlessly with Hot Module Reloading (HMR) for server code, eliminating the need for manual server restarts during development. The current stable version is 4.2.18, released as part of the broader Razzle monorepo, indicating its release cadence is tied to Razzle's development lifecycle. Its key differentiators include simplified HMR setup for server code and the ability to pass arguments directly to Node.js or the server script, making debugging easier.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install razzle-start-server-webpack-plugin"],"cli":null},"imports":["import StartServerPlugin from 'start-server-webpack-plugin';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import path from 'path';\nimport webpack from 'webpack';\nimport StartServerPlugin from 'start-server-webpack-plugin';\n\nexport default {\n  mode: 'development',\n  entry: {\n    server: [\n      'webpack/hot/poll?1000',\n      './src/server.js'\n    ]\n  },\n  target: 'node',\n  watch: true,\n  externals: [\n    /^[a-z].*$/ // Don't bundle node_modules\n  ],\n  module: {\n    rules: [\n      {\n        test: /\\.js$/,\n        exclude: /node_modules/,\n        use: {\n          loader: 'babel-loader',\n          options: {\n            presets: ['@babel/preset-env']\n          }\n        }\n      }\n    ]\n  },\n  plugins: [\n    new webpack.HotModuleReplacementPlugin(),\n    new webpack.NoEmitOnErrorsPlugin(),\n    new StartServerPlugin({\n      verbose: true,\n      debug: true,\n      entryName: 'server',\n      nodeArgs: ['--inspect-brk'], // For debugging\n      scriptArgs: ['--my-custom-arg'],\n      restartable: true,\n      once: false\n    }),\n    new webpack.DefinePlugin({\n      'process.env.NODE_ENV': JSON.stringify('development')\n    })\n  ],\n  output: {\n    path: path.resolve(__dirname, 'dist'),\n    filename: '[name].js',\n    libraryTarget: 'commonjs2'\n  }\n};\n\n// A minimal server example (src/server.js)\n// import express from 'express';\n// const app = express();\n// app.get('/', (req, res) => res.send('Hello HMR!'));\n// const port = process.env.PORT || 3000;\n// app.listen(port, () => console.log(`Server listening on port ${port}`));\n// if (module.hot) {\n//   module.hot.accept();\n//   module.hot.dispose(() => console.log('Server disposed.'));\n// }","lang":"javascript","description":"This quickstart demonstrates configuring Webpack to use `StartServerPlugin` for a Node.js server, enabling automatic restarts and Hot Module Replacement during development, including debugging with Node.js inspector.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}