Я пытаюсь создать свой собственный конструктор в Angular 7 для развертывания файлов на сервере.
Я написал функцию run
с вызовом ssh2
lib для развертывания файлов.
import { BuilderConfiguration, BuilderContext, BuildEvent } from '@angular-devkit/architect';
import { Observable, of } from 'rxjs';
import { DeployArchitectSchema } from './schema';
import { Client } from 'ssh2'
import { execSync } from 'child_process';
const util = require('util');
const exec = util.promisify(require('child_process').exec);
export default class DeployArchitect {
constructor(private context: BuilderContext) {
}
run(builderConfig: BuilderConfiguration<Partial<DeployArchitectSchema>>): Observable<BuildEvent> {
console.log(builderConfig);
try {
const connSettings = {
host: 'server.com',
port: 22,
username: 'user',
password: 'password'
};
const remotePathToList = '/path/to/copy/';
let ssh = new Client();
ssh.on('ready', function () {
console.log('Client :: ready');
ssh.sftp(function (err, sftp) {
if (err) throw err;
console.log(sftp)
// Do some stuff
});
}).on('close', function () {
console.log('Client :: closed');
}).on('end', function () {
console.log('Client :: ended');
}).connect(connSettings);
return of({ success: true })
} catch (error) {
return of({ success: false })
}
}
}
Ничего не происходит (только console.log(builderConfig);
), когда я запускаю этот код.Но если я запускаю npx ts-node deploy.ts
, который совпадает с кодом выше, это работает.
Если я попытался execSync('npx ts-node deploy.ts')
в функции run
компоновщика, ничего не произойдет (только console.log(builderConfig);
).
Не понимаю, почему у меня такое поведение!Кто-нибудь может мне помочь?