deployment-quickly
Version:
node实现自动化部署项目至服务器
46 lines (45 loc) • 1.5 kB
JavaScript
const { existsSync } = require('fs')
const path = require('path')
const cwd = require('../utils/getCwd')
const sshConnect = require('../utils/sshConnection')
const mergeConfig = require('../utils/mergeConfig')
const defaultConfig = require('../config/dq.config.default.json')
function buildAction (options) {
// 命令行输入的配置
const inputConfig = {
host: options.host,
username: options.user,
port: options.port,
password: options.PWD,
privateKey: options.privateKey,
localPath: options.local,
remotePath: options.dest,
os: options.os
}
return new Promise((resolve, reject) => {
// 最终配置
let finalConfig
// 判断用户有没有配置文件
const userConfigPath = path.resolve(cwd, 'dq.config.json')
const isExist = existsSync(userConfigPath)
if (isExist) {
const userConfig = require(userConfigPath)
// 合并本地的配置文件和默认的配置
const midConfig = mergeConfig(defaultConfig, userConfig)
// 合并命令行输入的配置和上述合并之后的配置
finalConfig = mergeConfig(midConfig, inputConfig)
} else {
// 合并默认配置和命令行配置
finalConfig = mergeConfig(defaultConfig, inputConfig)
}
console.log(finalConfig)
sshConnect(finalConfig)
.then(res => {
resolve(res)
})
.catch(err => {
reject(err)
})
})
}
module.exports = buildAction