一、前言
nuxt是一个非常优秀的一体化网站开发框架,虽然目前其已经基本可用了,但实践中却仍然存在一些麻烦的问题。
比如开发完成之后的部署过程,由于其构建文件中使用了软链接,而windows、linux系统两者的格式又并不相同。
这就导致了每当在windows系统上开发完毕后,都必须自己亲手将其压缩为zip压缩包、上传到服务器上解压,才不会有问题。
这个过程很繁琐,尤其是在网站功能更新频率很频繁的情况下,实在难以忍受这种情况。
所以从一开始使用这个框架时,我就在思考能不能实现一键部署,最终才探索出一套可行性方案。
最终的效果运行一个脚本文件./unload.sh
,即可完成所有部署工作!
二、基本环境
最开始我是在windows系统上开发,然后打包部署后再上传到linux云服务器上。
这种方式在大部分情况都是可用的,但有些包本身底层用的C++、rust之类写的,这就导致打包后直接上传到云服务器上,并不能直接被使用。
比如我想实现一个分词功能,就用到了一个jeiba库:@node-rs/jieba
,由于其底层用的rust实现,安装时直接下载编译好的只能在本平台运行的二进制文件,这就导致你将其上传到云服务器上无法使用。
所以经过我的探究,其最佳实践是使用windows子系统Ubuntu,没有安装的可以参考本站另一篇文章:Linux系统入门。
然后下一步,使用vscode
,安装wsl
插件,这可以使我们直接在windows系统上运行vscode在linux环境下进行开发!
并且由于子系统与我们windows系统属于物理上连接,网络延迟基本可以忽略,开发效率体验并不会降低太多。
当然,这意味着你需要在子系统上再次搭建一下nuxt的开发环境。
注意:最好不要直接将windows系统的项目文件直接全部复制过去,否则很可能会出现一切难以修复的问题。
最好的方式是初始化好环境之后,再一步一步慢慢移植你的项目文件代码。
而且很可能在你使用某些第三方库时会出现问题,比如常见的element plus,它会报与popperjs/core
相关的错误。
只需要在包管理文件中添加对其的依赖即可解决:"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7"
待这一切都准备就绪后,就可以开始本文要讲解的重点了。