Vue3 + vite项目利用scp2自动部署到服务器
1、项目根目录下新建deploy文件夹,创建index.js文件
// deploy/index.js里面 const scpClient = require('scp2') const ora = require('ora') const chalk = require('chalk') const server = require('./product') const spinner = ora( '正在发布到' + (process.env.NODE_ENV === 'prod' ? '生产' : '测试') + '服务器...' ) var Client = require('ssh2').Client var conn = new Client() conn .on('ready', function () { // rm 删除dist3文件, 是换行 换行执行 重启nginx命令 我这里是用docker重启nginx conn.exec('rm -rf /data/tomcat8/webapps/nemp/*', function ( err, stream ) { if (err) throw err stream .on('close', function (code, signal) { // 在执行shell命令后,把开始上传部署项目代码放到这里面 spinner.start() scpClient.scp( './dist', { host: server.host, port: server.port, username: server.username, password: server.password, path: server.path }, function (err) { spinner.stop() if (err) { console.log(chalk.red('发布失败. ')) throw err } else { console.log( chalk.green( 'Success! 成功发布到' + (process.env.NODE_ENV === 'prod' ? '生产' : '测试') + '服务器! ' ) ) } } ) conn.end() }) .on('data', function (data) { console.log('STDOUT: ' + data) }) .stderr.on('data', function (data) { console.log('STDERR: ' + data) }) }) }) .connect({ host: server.host, port: server.port, username: server.username, password: server.password // privateKey: require('fs').readFileSync('/home/admin/.ssh/id_dsa') })
2、package.json文件夹配置打包上传命令
"scripts": { "dev": "vite --open", "build": "vite build", "deploy": "vite build && node ./deploy", // 打包并上传到服务器 "serve": "vite preview" },
3、执行命令便会自动上传dist文件到服务器