webpack项目部署到服务器,vue项目通过webpack插件打包后自动部署到服务器

我们在实际开发中经常会遇到版本不停迭代,然后我们需要把webpack打包好的文件上传出到服务器,这个是比较麻烦的,今天我给大家分享一个在vue项目中通过运行npm run build 生成打包好的文件后直接上传服务器,不要我们每次都手动拷贝。

这个方案的思路是我们自己写一个的webpack的插件,在打包完成的时候把生成的文件名和数据通过post请求上传服务器,服务器获取到数据和文件名,重新生成文件到网站的目录下,我这边用node搭建的一个资源服务器.

(1)写我们的webpack插件

6cbf7defc0284b1e1c0d28ea4643b904.png

​在UplodeFileWebpackPlugin类中定义apply函数,在函数内部我们注册emit事件,这个事件是生成资源到 output 目录之前调用,在回调函数中我们可以获取到文件名和文件里面的内容,然后调用upload函数上传文件,需要注意的是在函数后面一定要调用callback,不然webpack不知道你什么执行完成就会卡在哪里.

(2)在vue.config.js中配置我们的webpack插件

5a793544f548d4ae7d2aa39f9717a20a.png

在vue.config.js中有一个configureWebpack选项可以是一个对象或者是一个函数,在函数中我们判断在生产环境触发这个插件。

(3)使用nodejs搭建一个服务

a41d9240e08d99bdfe5684ddb94109cd.png

在搭建服服务器的时候我们需要在启动的时候加下面的代码,因为我在上传的时候遇见了http大小限制的问题

app.use(bodyParser.json({limit: '10mb'}));

app.use(bodyParser.urlencoded({limit: '10mb', extended: true}));

在unploadFile中我们首先先确定我们的网页保存的路径,然后自己重新定位一个dist路径,我是保存在当前目录下了,然后在创建需要用到的目录(dist,img,css,js),图片的是不同的我们需要解析里面的buffer,如果是图片文件content是一个对象,里面有type,data两个字段,data是数组所有需要解析里面的buffer,然后写入对应的文件就可以了。​

30d01be0a17b06e2f62b598ecdfd49e7.png

到这里这个功能基本就实现了,我也是一个初学者,有什么不对的地方大家一起讨论。

觉得本文对你有帮助,添加公众号[自学前端之路]