Angular Custom Builder не работает внешняя библиотека - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь создать свой собственный конструктор в 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);).

Не понимаю, почему у меня такое поведение!Кто-нибудь может мне помочь?

...