编辑器:VS code
官网文档:
vite
,
vitepress
,
Node.js
,
ssh2
(官方文档是最好的资料)
使用版本:
vite:2.0.2
,
vitepress: 0.12.2
,
Node.js:12.16.2
,
ssh2: 0.8.9
我在工作之余使用
vite
和
vitepress
搭建了文档系统,一方面是体验这两个新技术,另一方面是帮助团队内部整理技术文档。在实际推广中,由于后端的同事不熟悉前端项目打包、发布和部署的流程,于是就写了这个自动化的脚本。
大致思路分为三步:
打包项目:将打包的文件添加到指定压缩包中;
上传项目:连接服务器,并将压缩包上传到指定目录中;
部署项目:备份原项目文件,并将压缩包解压到原项目目录中。
请在项目
根目录
下创建
workflow.js
(这里假设你已经建好了需要自动化打包、发布和部署的项目)。
安装
ssh2
$ yarn add ssh2 --dev
在 workflow.js
文件中添加以下代码。
const ChildProcess = require('child_process');
let buildProject = ChildProcess.exec(
'yarn docs:build && tar zcvf assets.tar.gz ./docs/.vitepress/dist',
() => {}
buildProject.stdout.pipe(process.stdout);
buildProject.on('exit', () => {
此时在终端中运行该脚本后,会在项目的根目录下生成名为 assets.tar.gz
的压缩包文件,别忘了在 .gitignore
文件中添加忽略 assets.tar.gz
文件。
$ node workflow.js
提示:如果未成功,请检查路径是否正确;或者在 本地 终端中依次执行上面的 shell
命令,排查一下是哪一步出的问题。
在 workflow.js
文件中添加以下代码(注释中 line: number
表示在 number
行新增代码,未注明 line: number
表示修改上一步的代码或者在末尾新增代码)。
请修改 服务器连接配置,并且服务器文件路径需要根据自身情况进行修改。
const Ssh = require('ssh2');
buildProject.on('exit', () => {
uploadProject();
let sshClient = new Ssh.Client();
function uploadProject() {
sshClient
.on('ready', () => {
sshClient.sftp((err, sftp) => {
sftp.fastPut(
'./assets.tar.gz',
'/www/wwwroot/assets.tar.gz',
(err, result) => {
.connect({
host: '0.0.0.0',
port: 22,
username: 'root',
password: 'root'
此时在终端中运行该脚本后,服务器 www/wwwroot
目录会出现 assets.tar.gz
的压缩包文件。
$ node workflow.js
提示:如果未成功,请检查路径和服务器连接配置是否正确。
切记 rm -rf
后一定要你要删除的对象,否则服务器就没了。
这里的 shell
脚本还有可以优化的空间,并且该方法只是正常流程,出错后就需要手动处理了。
(err, result) => {
deployProject(sshClient);
function deployProject(sshClient) {
sshClient.shell((err, stream) => {
stream
.end(
cd /www/wwwroot/
mv documents bak/documents.$(date "+%Y%m%d%H%M%S")
tar zxvf assets.tar.gz
mv docs/.vitepress/dist documents
rm -rf assets.tar.gz
.on('data', (data) => {
console.log('data: ', data.toString());
.on('close', () => {
console.log('close');
sshClient.end();
提示:如果未成功,请先看 本地 终端输出的信息,根据提示排查问题;或者在 服务器 终端中依次执行上面的 shell
命令,排查一下是哪一步出的问题。
强迫症必做
在 package.json
添加自动化打包、发布和部署脚本。
"scripts": {
"docs:auto": "node workflow.js",
以后只需在 本地 终端执行以下命令就可以实现自动化打包、发布和部署脚本了。
$ yarn docs:auto
HAVE FUN : )
- 1564
-
jjggddb
Docker
Jenkins
- 416
-
Vue.js
Docker
Jenkins
- 7700
-
VINCENT