注册
web

前端黑科技篇章之scp2,让你一键打包部署服务器

scp2是一个使用nodejs对于SSH2的模拟实现,它可以让我们编译之后将项目推送至测试环境,以方便测试。


项目安装scp2


npm i scp2 -D

编写配置文件


创建scp2的配置文件 upload.server.js


const serInfo = JSON.parse(process.env.npm_config_argv).cooked // 获取终端命令
const server = {
host: serInfo[2], // 服务器ip
port: '22', // 端口一般默认22
username: serInfo[3] || 'root', // 用户名
password: serInfo[4] || 'root', // 密码
pathNmae: '', // 上传到服务器的位置
locaPath: './dist/' // 本地打包文件的位置
}

const argv1 = process.argv
console.log(argv1)
console.log(serInfo)
// 引入scp2
const client = require('scp2')
const ora = require('ora')
const spinner = ora('正在发布到服务器...')

const Client = require('ssh2').Client
const conn = new Client()

console.log('正在建立连接')
conn.on('ready', () => {
console.log('已连接')
if (!server.pathNmae) {
console.log('连接已关闭')
conn.end()
return false
}

conn.exec('rm -rf' + server.pathNmae + '/*', (err, stream) => {
console.log(err + '删除文件')
stream.on('close', (code, signal) => {
console.log('开始上传')
spinner.start()
client.scp(server.locaPath, {
'host': server.host,
'port': server.port,
'username': server.username,
'password': server.password,
'path': server.pathNmae
}, err => {
spinner.stop()
if (!err) {
console.log('项目发布完毕')
} else {
console.log('err', err)
}
conn.end()
})
})
})
}).connect({
host: server.host,
port: server.port,
username: server.username,
password: server.password
// privateKey: '' // 私秘钥
})



配置package.json


image.png


两种上传方式,个人比较喜欢第二种哟



  1. build:pub:一键打包并上传服务器
  2. build:打包上传然后执行npm run publish 上传服务器

实战例子


弄好以上配置,在终端上敲 npm run build 然后再敲 npm run publish 得到以下结果。


image.png


已经发布到指定IP知道目录的服务器啦,这样我们就不用通过第三方ftp工具去上传了哦,是不是方便了很多,如果觉得该文章对你有帮助,请点个小赞赞吧。


作者:大码猴
来源:juejin.cn/post/6955070802035228685

0 个评论

要回复文章请先登录注册