记录下@H_502_1@webpack-dev-server的用法.
首先,我们来看看基本的@H_502_1@webpack.config.js的写法
配置文件提供一个入口和一个出口,@H_502_1@webpack根据这个来进行@H_502_1@js的打包和编译工作。虽然@H_502_1@webpack提供了@H_502_1@webpack --watch的命令来动态监听文件的改变并实时打包,输出新@H_502_1@bundle.js文件,这样文件多了之后打包速度会很慢,此外这样的打包的方式不能做到@H_502_1@hot replace,即每次@H_502_1@webpack编译之后,你还需要手动刷新浏览器。
@H_502_1@webpack-dev-server其中部分功能就能克服上面的2个问题。@H_502_1@webpack-dev-server主要是启动了一个使用@H_502_1@express的@H_502_1@Http服务器。它的作用主要是用来伺服资源文件。此外这个@H_502_1@Http服务器和@H_502_1@client使用了@H_502_1@websocket通讯协议,原始文件作出改动后,@H_502_1@webpack-dev-server会实时的编译,但是最后的编译的文件并没有输出到目标文件夹,即上面配置的:
注意:你启动webpack-dev-server后,你在目标文件夹中是看不到编译后的文件的,实时编译后的文件都保存到了内存当中。因此很多同学使用webpack-dev-server进行开发的时候都看不到编译后的文件
下面来结合@H_502_1@webpack的文档和@H_502_1@webpack-dev-server里部分源码来说明下如何使用:
启动
启动@H_502_1@webpack-dev-server有2种方式:
配置
我主要讲解下@H_502_1@cmd line的形式,@H_502_1@Node.js API形式大家去看下官方文档。可通过@H_502_1@npm script进行启动。我的目录结构是:
content-base
设定@H_502_1@webpack-dev-server伺服的@H_502_1@directory。如果不进行设定的话,默认是在当前目录下。
这个时候还要注意的一点就是在@H_502_1@webpack.config.js文件里面,如果配置了@H_502_1@output的@H_502_1@publicPath这个字段的值的话,在@H_502_1@index.html文件里面也应该做出调整。因为@H_502_1@webpack-dev-server伺服的文件是相对@H_502_1@publicPath这个路径的。因此,如果你的@H_502_1@webpack.config.js配置成这样的:
那么,在@H_502_1@index.html文件当中引入的路径也发生相应的变化: