1、安装
npm install scp2 --save-dev
2、使用
const scpClient = require('scp2') // 引入scp2
const ora = require('ora')
const chalk = require('chalk')
const spinner = ora('正在发布到服务器...')
const Client = require('ssh2').Client
const conn = new Client()
const server = {
host: '', // 服务器的IP地址
port: '', // 服务器端口
username: 'root', // 用户名
password: '', // 密码
path: '/var/www/html/', // 项目部署的服务器目标位置
command: 'rm -rf /var/www/html/*' // 删除命令
}
conn.on('ready', () => {
conn.exec(server.command, (err, stream) => {
if (err) { throw err }
stream.on('close', () => {
spinner.start()
scpClient.scp(
'./dist/', // 本地打包文件的位置
{
host: server.host,
port: server.port,
username: server.username,
password: server.password,
path: server.path
},
(err) => {
spinner.stop()
if (err) {
console.log(chalk.red('发布失败!'))
throw err
} else {
console.log(chalk.green('项目发布成功!'))
}
}
)
conn.end()
}).on('data', (data) => {
console.log('STDOUT: ' + data)
}).stderr.on('data', (data) => {
console.log('STDERR: ' + data)
})
})
}).connect({
host: server.host,
port: server.port,
username: server.username,
password: server.password
})
3、配置npm脚本:在package.json配置执行命令
// mode对应.env文件的环境配置
"deploy:test": "vue-cli-service build --mode test && node ./deploy" // 测试环境打包部署
"deploy:dep": "vue-cli-service build --mode production && node ./deploy" // 生产环境打包部署