🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## webpack-dev-server 简单来说,webpack-dev-server 就是一个小型的静态文件服务器,可以使用它,为webpack打包生成的资源文件提供Web服务。 1、安装`webpack-dev-server`。 `npm install webpack-dev-server --save-dev` > 同样的,webpack-dev-server 需要全局安装,npm install -g webpack-dev-server 2、修改`webpack.dev.config.js`,增加`webpack-dev-server`的配置! ~~~ 'use strict' const path = require('path') module.exports = { /*入口*/ entry: path.join(__dirname, 'src/index.js'), /*输出到dist文件夹,输出文件名字为bundle.js*/ output: { path: path.join(__dirname, './dist'), /*输出目录*/ filename: 'bundle.js' /*输出文件名*/ }, // 新增: /*静态文件服务器配置*/ devServer: { contentBase: path.join(__dirname, './dist') }, /*include:包含,src文件夹下面的以.js结尾的文件,要使用babel解析*/ /*cacheDirectory是用来缓存编译结果,下次编译加速*/ module: { rules: [{ test: /\.js$/, use: ['babel-loader?cacheDirectory=true'], include: path.join(__dirname, 'src') }] } } ~~~ 3、现在需要使用`webpack-dev-server`来帮我们做一些事情。 `webpack-dev-server --config webpack.dev.config.js` 现在打开浏览器 http://localhost:8080 ,可以看到首页和Page了。 Q:` --content-base`是什么? A:URL的根目录。如果不设定的话,默认指向项目根目录。 **重要提示:webpack-dev-server编译后的文件,都存储在内存中,我们并不能看见的。你可以删除之前遗留的文件dist/bundle.js, 仍然能正常打开网站!** 4、每次执行`webpack-dev-server --config webpack.dev.config.js`,要打很长的命令,我们修改`package.json`,增加`script->dev`: ~~~ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "work": "webpack --config webpack.dev.config.js", "dev": "webpack-dev-server --config webpack.dev.config.js" } ~~~ 既然用到了`webpack-dev-server`,我们就来看看[它的其他的配置项](https://doc.webpack-china.org/configuration/dev-server)。 * color(CLI only) `console`中打印彩色日志 * historyApiFallback 任意的404响应都被替代为`index.html`。有什么用呢?你现在运行 `npm run dev`,然后打开浏览器,访问 http://localhost:8080 ,然后点击Page到链接 http://localhost:8080/page ,然后刷新页面,是不是会出现404了。为什么?`dist`文件夹里面并没有`page.html`所以会变成404,所以我们需要配置historyApiFallback,让所有的404都定位到`index.html`。 * host指定一个`host`,默认是`localhost`,如果希望本地服务器外部能访问的话,比如手机通过IP访问,就需要指定如下:`host: "0.0.0.0"`。 * hot 启用`webpack`的模块热替换特性。 * port 配置要监听的端口。默认就是8080端口,通常这个端口容易被占用,所以大多数情况都是要修改的。 * proxy 代理。比如在`localhost: 3000`上有后端接口服务的话,你可以这样启用代理: ~~~ proxy: { "/api": "http://localhost:3000" } ~~~ * progress(CLI only) 将编译进度输出到控制台。 5、根据这几个配置,修改下我们的`webpack-dev-server`的配置~ ~~~ devServer: { port: 10086, contentBase: path.join(__dirname, './dist'), historyApiFallback: true, host: '0.0.0.0' } ~~~ 6、CLI ONLY的需要在命令行中配置 `package.json` ~~~ "dev": "webpack-dev-server --config webpack.dev.config.js --color --progress" ~~~ 现在我们执行npm run dev 看看效果。 是不是看到打包的时候有百分比进度? 在 http://localhost:8080/page 页面刷新是不是没问题了? 用手机通过局域网IP是否可以访问到网站? 参考地址: https://segmentfault.com/a/1190000006670084 https://webpack.js.org/guides/development/#using-webpack-dev-server