hrm-common-script
v0.0.6
Published
通用型脚本模块
Downloads
2
Readme
设计思路 通过注入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