0.0.6 • Published 4 years ago

hrm-common-script v0.0.6

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

设计思路 通过注入sequelize实例(以后支持mongoose、typeorm等)到脚本框架内,实现自动化脚本运维。


使用方法 1 编辑具体脚本文件,继承 BaseScript 这个抽象类就可以了。

*** aaa.script.ts ***
import { BaseScript } from 'hrm-common-script';

export class AaaScript extends BaseScript {
	// [执行后可修改] 是否可以重复执行脚本
	// 强调是否可以。仅作为标识而已
    public readonly isRepeatable: boolean = true;
	// [执行后可修改] 是否要重复执行脚本
	// [!!!] 若为true, 则每次执行命令, 均会执行该脚本
	public readonly repeatExec: boolean = true;
	// module 和 name, 两者一起需要绝对唯一
	// [执行后不可变] 脚本名称
    public readonly name: string = 'Aaa';
	// [执行后不可变] 脚本所在微服务名称
    public readonly module: string = 'hrm-api';
	// [执行后可修改] 脚本执行顺序, 最好也写在脚本文件名上, 方便识别
	// 值越高越后执行
	public readonly sequence: number = 1;

	// 执行脚本
	// 如果有异常, 直接 throw 出来即可
    public async execute() {
        console.log('do script');
    }
}

2 注入数据库实例到 ScriptFramework 里,并配置好相关参数,以及配置具体脚本文件(可以采用index.ts方式,或者一个一个填进对象里也可以)

*** script.ts ***
import { ScriptFramework } from 'hrm-common-script';
import { Sequelize } from 'sequelize';
import * as Scripts from './index';
import { SequelizeInstance } from '../database/sequelize';

class Script extends ScriptFramework {
    constructor(sequelizeInstance: Sequelize) {
        super({
            scripts: Scripts,
            sequelizeInstance,
            exitWhenExecuted: true,
        });
    }
}

const script = new Script(SequelizeInstance);
script.execute();

3 package.json 里的 scripts 属性,配置相应的目录即可

"script": "ts-node ./src/script/script.ts"

4 需要执行脚本的时候,输入命令即可

npm run script
0.0.5

4 years ago

0.0.6

4 years ago

0.0.4

4 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago