角度自定义生成器外部库不起作用

时间:2019-03-22 08:08:27

标签: angular angular7 builder

我试图在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);)。

我不是为什么会有这种行为!有人可以帮助我吗?

0 个答案:

没有答案