如何不借助第三方web服务器启动(webpack)vue打包后的dist目录

很多时候,我们打包完成了,想看看打包后的项目是否有问题,那么会借助于除webpack之外的第三方工具例如

http-server

nginx等

那么是否有办法能将就开发环境的localhost:xxxx/dist/index.html访问呢

答案是可以的,在webpack的devserver的配置中,有一个contentBase选项,这将表达webpack-dev-server基于何处启动服务器,而基于vue2+webpack的vue初始化项目因为htmlwebpackplugin的存在

导致contentBase设置为false, 所以需要将这句代码注释掉

 

当注释掉后我们访问打包项目 此时的确能访问到如下:

 

 但是可以看到页面是空白的,我们查看network:

 

 的确index.html文件是来自于dist的,是被压缩过的,然后再看js,css等的情况:

http://localhost:9527/static/js/app.34cb41894ab59dafdbff.js 

再观察index.html中script的src属性:

 

 结合请求和index.html中的内容,我们推断出 请求/static/js/xxxx.js时,浏览器是这样拼接的 localhost:xxxx+script的src

这显然不对,因为打包后的资源是在 localhost:xxx/dist/static/js/xxxx才对

说明问题就出在index.html对script的引用路径这里出了问题

我们还知道 ./ 和 /表达了两个不同的路径,一个是基于当前文件夹,而后一个不是

所以 我们现在要测试 能否通过localhost:xxx/dist/static/js/xxx.js拿到:

 

 说明是可以的,所以现在的目标是将打包的路径改为./,

那么就需要修改build的output属性 如下:

 

 将 /改为./

然后我们重新打包,浏览器中打开localhost:xxxx/dist/index.html,就会出现很cool的事情

 

that's all,thanks!!!

posted @ 2022-10-19 11:25  wangnima666  阅读(359)  评论(0编辑  收藏  举报