我试图在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);
)。
我不是为什么会有这种行为!有人可以帮助我吗?