前言

之前没事的时候用Jenkins搭建的自动化部署,不知道什么原因 大概率我git提交之后Jenkins老是崩掉,由于太菜 没去找原因。
原本搭建它是为了偷懒,结果凉凉 这次就想着能不能我每次项目写好之后 用命令手动提交到服务器上 就有了这篇文章。

正文

需要 npm 下载这个包ssh2-sftp-client 链接

sftp.js文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

const path = require('path');
const Client = require('ssh2-sftp-client');
const sftp = new Client();

const config = {
host: 'xx.xxxx.xxx.xxx',
port: '22',
username: 'xxxx',
password: 'xxxxxx'
}

/**
* 上传文件到sftp
* @param { Object } config sftp 链接配置参数
* @param { String } config.host sftp 主机地址
* @param { String } config.port sftp 端口号
* @param { String } config.username sftp 用户名
* @param { String } config.password sftp 密码
*
* @param { Object } options 配置参数
* @param { String } localStatic // 本地静态资源文件夹路径
* @param { String } remoteStatic // 服务器静态资源文件夹路径
* @param { String } localFile // 本地html页面
* @param { String } remoteFile // 服务器html页面
*/
function upload(config, options) {
sftp.connect(config).then(() => {
console.log('‘sftp链接成功‘');
console.log('‘文件上传中‘');
return sftp.uploadDir(options.localStatic, options.remoteStatic);
}).then((data) => {
console.log('‘文件上传成功‘',data);
sftp.end();
}).catch((err) => {
console.log('‘上传失败‘', err);
sftp.end();
})
}


// 上传文件
upload(config, {
'localStatic': path.resolve(__dirname, './dist'), // 本地文件夹路径
'remoteStatic': '/root/File', // 服务器文件夹路径器
})

最后添加个自定义的命令

package.json文件

1
2
3
4
5
6
7
"scripts": {
"serve": "vue-cli-service serve",
"dev": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"ftp": "node sftp.js"
}

运行 npm run ftp