node 自动化工程部署
如果打包的文件需要压缩,请参考node 的 archiver 插件使用
(转载:https://blog.csdn.net/harmsworth2016/article/details/82214736)
正常情况下的打包如下:
const { NodeSSH } = require("node-ssh");
const { local, remote, clientConfig } = require("../config");
module.exports = async function (option) {
//实例化node服务器连接协议
const client = new NodeSSH();
//连接服务器
let connect = await client.connect(clientConfig);
//判断是否连接成功
let isConnected = client.isConnected();
if (isConnected) {
//第一个参数:命令
//第二个参数:命令后面的参数,详情参考linux的操作命令(一般服务器都是linux的,windows的命令未有尝试)
// const status = await client.exec('ls',['-l'])
// console.log(status)
//上传文件
const status = await client.putDirectory(local, remote, {
recursive: true,
concurrency: 10,
});
//成功为true
status?console.warn('部署成功') : console.warn('部署失败')
process.exit(0)
}
};
其中,config的js写法:
const path = require('path')
module.exports = {
local: path.resolve(__dirname, '../dist'), //本地 待发布目标
remote: '/home/admin/initvite',//服务器 发布地址
clientConfig: {
port: 你的服务器端口, // ssh 端口
host: '你的服务器地址',// ssh 地址
username: '你的用户名',// ssh 用户
password: '你的用户密码', // 密码
},
}
可以结合
commander.js做成命令在你本地编译后直接发布到服务器
写法大概如下,其中action里面引入的就是刚才的node-ssh文件
const {program} = require('commander')
const action = require('./action')
program
.command('say')//你的命令
.alias('s')//你的命令的简写
.option('-sc,--c <c>','查看输入的值','1') //你的命令参数,eg:-sc 也可以是--c 最后在action 的参数中显示出来是 c这个key
.option('-sl,--l <l>','第二個參數','1')//你的命令参数
.action(action)//输入命令后要调用的方法
运行效果如图:

然后可以把命令配置到项目的package.json中,如:(这里以vite的vue项目为例)
"scripts": { "dev": "vite", "build": "vue-tsc --noEmit && vite build &&node deploy say", "serve": "vite preview", },
积累小的知识,才能成就大的智慧,希望网上少一些复制多一些原创有用的答案

浙公网安备 33010602011771号