webpack
Servidor de desarrollo: webpack-dev-server
Buscar..
Instalación
webpack-dev-server se puede instalar a través de npm
npm --save-dev webpack-dev-server
ahora puedes iniciar el servidor
./node_modules/.bin/webpack-dev-server
Para simplificar el uso, puede agregar un script a package.json
// package.json
{
...
"scripts": {
"start": "webpack-dev-server"
},
...
}
ahora para ejecutar el servidor puede utilizar
npm run start
webpack-dev-server está configurado en el archivo webpack.config.js en la sección devServer .
Para cambiar el directorio de base de contenido del servidor puede usar la opción contentBase . La configuración de ejemplo del directorio raíz a public_html podría verse como
let path = require("path");
module.exports = {
...
devServer: {
contentBase: path.resolve(__dirname, "public_html")
},
...
}
Usando proxy
webpack-dev-server puede webpack-dev-server algunas solicitudes a otros servidores. Esto puede ser útil para desarrollar el cliente API cuando desee enviar solicitudes al mismo dominio.
El proxy se configura a través del parámetro proxy .
La configuración de ejemplo del servidor dev que envía solicitudes a /api a otro servicio que escucha en el puerto 8080 podría tener este aspecto
// webpack.config.js
module.exports = {
...
devServer: {
proxy: {
"/api": {
target: "http://localhost:8080"
}
}
}
...
}
volver a escribir
Es posible volver a escribir la ruta de destino usando la opción pathRewrite .
Suponiendo que desea eliminar el prefijo /api del ejemplo anterior, su configuración puede parecer
// webpack.config.js
...
devServer: {
proxy: {
"/api": {
target: "http://localhost:8080",
pathRewrite: {"^/api" : ""}
}
}
}
...
La solicitud /api/user/256 se convertirá a http://localhost:8080/user/256 .
filtrar
Es posible presentar solo algunas solicitudes. bypass permite proporcionar una función cuyo valor de retorno determinará si la solicitud debe ser proxy o no.
Suponiendo que solo desea webpack proxy solo las solicitudes POST a /api y dejar que el webpack encargue del resto, su configuración podría tener este aspecto
// webpack.config.js
...
devServer: {
proxy: {
"/api": {
target: "http://localhost:8080",
bypass: function(req, res, proxyOptions) {
if(req.method != 'POST') return false;
}
}
}
}
...