Use webpack with a development server that provides live reloading. This should be used for development only.
It uses webpack-dev-middleware under the hood, which provides fast in-memory access to the webpack assets.
First things first, install the module:
console
npm install webpack-dev-server --save-dev
or
console
yarn add -D webpack-dev-server
or
console
pnpm add -D webpack-dev-server
Note: While you can install and run webpack-dev-server globally, we recommend installing it locally. webpack-dev-server will always use a local installation over a global one.
There are two main, recommended methods of using the module:
The easiest way to use it is with the webpack CLI. In the directory where your
webpack.config.js
is, run:
console
npx webpack serve
Following options are available with webpack serve
:
``` Usage: webpack serve|server|s [entries...] [options]
Run the webpack dev server.
Options:
-c, --config server
option.
--no-http2 Does not serve over HTTP/2 using SPDY.
--https Allows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP). Deprecated, use the server
option.
--no-https Disallows to configure the server's listening socket for TLS (by default, dev server will be served over HTTP).
--https-passphrase server.options.passphrase
option.
--https-request-cert Request for an SSL certificate. Deprecated, use the server.options.requestCert
option.
--no-https-request-cert Does not request for an SSL certificate.
--https-ca server.options.ca
option.
--https-ca-reset Clear all items provided in 'https.ca' configuration. Path to an SSL CA certificate or content of an SSL CA certificate. Deprecated, use the server.options.ca
option.
--https-cacert server.options.ca
option.
--https-cacert-reset Clear all items provided in 'https.cacert' configuration. Path to an SSL CA certificate or content of an SSL CA certificate. Deprecated, use the server.options.ca
option.
--https-cert server.options.cert
option.
--https-cert-reset Clear all items provided in 'https.cert' configuration. Path to an SSL certificate or content of an SSL certificate. Deprecated, use the server.options.cert
option.
--https-crl server.options.crl
option.
--https-crl-reset Clear all items provided in 'https.crl' configuration. Path to PEM formatted CRLs (Certificate Revocation Lists) or content of PEM formatted CRLs (Certificate Revocation Lists). Deprecated, use the server.options.crl
option.
--https-key server.options.key
option.
--https-key-reset Clear all items provided in 'https.key' configuration. Path to an SSL key or content of an SSL key. Deprecated, use the server.options.key
option.
--https-pfx server.options.pfx
option.
--https-pfx-reset Clear all items provided in 'https.pfx' configuration. Path to an SSL pfx file or content of an SSL pfx file. Deprecated, use the server.options.pfx
option.
--ipc [value] Listen to a unix socket.
--live-reload Enables reload/refresh the page(s) when file changes are detected (enabled by default).
--no-live-reload Disables reload/refresh the page(s) when file changes are detected (enabled by default).
--magic-html Tells dev-server whether to enable magic HTML routes (routes corresponding to your webpack output, for example '/main' for 'main.js').
--no-magic-html Disables magic HTML routes (routes corresponding to your webpack output, for example '/main' for 'main.js').
--open [value...] Allows to configure dev server to open the browser(s) and page(s) after server had been started (set it to true to open your default browser).
--no-open Does not open the default browser.
--open-target server.options.ca
option.
--server-options-cacert-reset Clear all items provided in 'server.options.cacert' configuration. Path to an SSL CA certificate or content of an SSL CA certificate. Deprecated, use the server.options.ca
option.
--server-options-cert
Global options: --color Enable colors on console. --no-color Disable colors on console. -v, --version Output the version number of 'webpack', 'webpack-cli' and 'webpack-dev-server' and commands. -h, --help [verbose] Display help for commands and options.
To see list of all supported commands and options run 'webpack --help=verbose'.
Webpack documentation: https://webpack.js.org/. CLI documentation: https://webpack.js.org/api/cli/. Made with ♥ by the webpack team. ```
Note
Detailed documentation for above options is available on this link.
NPM package.json scripts are a convenient and useful means to run locally installed binaries without having to be concerned about their full paths. Simply define a script as such:
json
{
"scripts": {
"serve": "webpack serve"
}
}
And run the following in your terminal/console:
console
npm run serve
NPM will automatically refer to the the binary in node_modules
for you, and
execute the file or command.
While it's recommended to run webpack-dev-server via the CLI, you may also choose to start a server via the API.
See the related API documentation for webpack-dev-server
.
If you use TypeScript in the webpack config, you'll need to properly type devServer
property in order to avoid TS errors (e.g. 'devServer' does not exist in type 'Configuration'
). For that use either:
```ts
///
// Your logic ```
Or you can import the type from webpack-dev-server
, i.e.
```ts import type { Configuration as DevServerConfiguration } from "webpack-dev-server"; import type { Configuration } from "webpack";
const devServer: DevServerConfiguration = {}; const config: Configuration = { devServer };
// module.exports export default config; ```
Either method will start a server instance and begin listening for connections
from localhost
on port 8080
.
webpack-dev-server is configured by default to support live-reload of files as you edit your assets while the server is running.
See the documentation for more use cases and options.
While webpack-dev-server
transpiles the client (browser) scripts to an ES5
state, the project only officially supports the last two versions of major
browsers. We simply don't have the resources to support every whacky
browser out there.
If you find a bug with an obscure / old browser, we would actively welcome a Pull Request to resolve the bug.
We do our best to keep issues in the repository focused on bugs, features, and needed modifications to the code for the module. Because of that, we ask users with general support, "how-to", or "why isn't this working" questions to try one of the other support channels that are available.
Your first-stop-shop for support for webpack-dev-server should be the excellent documentation for the module. If you see an opportunity for improvement of those docs, please head over to the webpack.js.org repo and open a pull request.
From there, we encourage users to visit the webpack Gitter chat and
talk to the fine folks there. If your quest for answers comes up dry in chat,
head over to StackOverflow and do a quick search or open a new
question. Remember; It's always much easier to answer questions that include your
webpack.config.js
and relevant files!
If you're twitter-savvy you can tweet #webpack with your question and someone should be able to reach out and lend a hand.
If you have discovered a :bug:, have a feature suggestion, or would like to see a modification, please feel free to create an issue on Github. Note: The issue template isn't optional, so please be sure not to remove it, and please fill it out completely.
We welcome your contributions! Please have a read of CONTRIBUTING.md for more information on how to get involved.
This project is heavily inspired by peerigon/nof5.