问题背景
现在基于webpack打包的项目,大多都是单页面的。虽然webpack可以配置构建多页面,但是webpack对于多页面构建速度会比较慢,如果页面增加,整个开发和构建体验都会下降。
我们一般会选择一个页面或者两个页面在一个webpack项目里,如果我们需要构建很多页面,就会有很多项目。那么这些项目应该如何发布上线呢?
解决方案1
如果我们的一个webpack项目是一个git项目。
每个webpack项目打包后的dist目录弄成这个git项目的online分支。
然后在线上服务器上使用git拉取online分支,利用nginx静态目录进行上线。
问题:
多个git项目导致管理成本增加,线上服务器需要和多个git项目打交道。
解决方案:
专门搞一个项目来管理这些git项目,让服务器上的运维程序只和这个项目打交道。
解决方案2
我们把多个webpack项目搞成一个git项目。
每个webpack项目打包后的文件拷贝到这个git项目的一个统一的上线目录里,把这个上线目录弄成online分支。
然后在线上服务器只需要操作这个git项目online分支即可。
问题1:
这样导致了每个webpack项目打包出来的dist文件会出现在仓库里,如果多人开发,这个打包后的文件容易冲突。
解决方案:
本地不打包,利用CI在服务器上打包,并把打包后的文件push到仓库,因为每次都是CI利用最新的代码打包,所以dist目录的文件就不会冲突了。
问题2:
多个webpack项目在一个git仓库后,上线的时候如何控制只上线单个webpack项目上线呢?
解决方法:
目前只能通过分支进行控制,通过分支控制修改的项目,然后上线这个分支。
解决方案3
我们还是一个git项目,但是不同的分支对应不同的页面,每个页面分支都单独打包发布。线上服务器搞一个管理程序,可以通过一个项目不同分支发布不同的页面。
问题:
需要一个单独的程序和配置文件来利用不同分支上线不同页面。