Custom Node server with webpack
My application has a custom node.js
server for local development. It is very custom and can’t be easily replaced by the more idiomatic webpack-dev-server
. I need the custom script to run after the webpack build is complete and I want the server to run automatically.
In package.json
:
"scripts": {
"start":
"webpack --env local development serve --config ./webpack.config.js",
"server": "cd ./my-custom-server && node ./server.js",
// other scripts...
}
To run the server script I’ve created an ad-hoc plugin in my webpack config.
In webpack.config.js
:
module.exports = (env) => {
return {
// other settings...
plugins: [
// other plugins...
{
apply: (compiler) => {
console.log("Running local server on port 7000");
compiler.hooks.afterEmit.tap("foobar", () => {
exec("npm run server");
});
},
},
],
};
};
Now, I only run npm start
and don’t need to open a new terminal window for npm run server
See webpack documentation on Compiler Hooks for more details.