webpack-dev-server
cnpm install -D webpack-dev-server一些足够的配置:
const path = require("path");
const PATHS = {
app:path.join(__dirname,"./src/index.js"),
build:path.join(__dirname,"dist"),
publicPath:"/"
};
const webpack = require("webpack");
module.exports=function(env,argv){
return {
entry: {
main: PATHS.app,
},
mode: "development",
output: {
path: PATHS.build,
filename: '[name].boundle.js',
publicPath:PATHS.publicPath,
},
devServer: {
historyApiFallback: true,
contentBase:path.resolve(__dirname,'dist'),
quiet: false, //控制台中不输出打包的信息
noInfo: false,
inline: true, //开启页面自动刷新,
hot:true,
publicPath:PATHS.publicPath,
stats:'errors-only',
lazy: false, //不启动懒加载
compress:true,//开启后端gzip
progress: false, //显示打包的进度
overlay:{ //把编译的错误显示在浏览器上
errors:true,
warnings:true,
},
watchOptions: {
aggregateTimeout: 300
},
port: '8099', //设置端口号
//其实很简单的,只要配置这个参数就可以了
proxy: {
'/INFManage': {
target: 'http://localhost:8080',
secure: false,
changeOrigin:true,
}
}
},
plugins:[
//热更新替换,写插件,就要在运行的node命令加 --hot
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(),//显示模块的名字,默认是显示模块id
],
};
}注意当使用babel转化js时,要是使用了编译环境loader :babel-preset-env,默认是将ES6模块编译成CommonJs模块,这样会导致模块热更新HMR使用不了,可以配置配置{modules:false},则不会编译模块类型。
React保留上次的状态的热更新。
Last updated