Midway CodeMod
代码操作工具,便捷修改 midway serverless项目的 config / configuration
Install
$ npm i @midwayjs/code-mod -S
Usage
import { MidwayCodeMod, ProjectType } from '@midwayjs/code-mod';
// 初始化
const codeMod = new MidwayCodeMod({
root, // 项目根目录
type: ProjectType.INTEGRATION, // 默认为 NORMAL,一体化需要传 ProjectType.INTEGRATION
singleQuote: true // 默认为 true,导出的代码中字符串是否使用单引号
});
codeMod
.config()
.set('test', { // 设置某个key的多环境配置数据
local: 123,
default: 200,
})
.set('test2', {
local: 2123,
default: 2200,
});
// 结束,输出
codeMod.done();
Method
Config
操作用户配置
set
设置配置
set(key: string, multiEnvConfig: { [env: string]: any }): ConfigInstance;
// demo:
codeMod.config().set(
'test', // 配置的key
{ // 多环境的配置
local: 123,
default: 200,
}
)
get
列举某环境下的所有配置
get(key: string, env: string): any;
// demo:
const value = codeMod.config().get('test', 'local');
value === 123;
list
列举某环境下的所有配置
list(env: string): {
[configName: string]: any;
};
// demo:
const configs = codeMod.config().list()
Configuration
操作IoC配置
setImportConfigs
设置IoC要加载的配置文件、配置文件目录
setImportConfigs(configList: string[]): ConfigurationInstance;
// demo:
codeMod.configuration().setImportConfigs(['./config/']);
setImports
设置IoC要加载的外部模块
setImports(configModuleList: string[]): ConfigurationInstance;
// demo:
codeMod.configuration().setImports(['@midwayjs/faas-middleware-static-file']);
setProperty
设置 Configuration Class 的属性
setProperty(propertyName: string, propertyInfo?: { decorator: string;}): ConfigurationInstance;
// demo:
codeMod.configuration().setProperty('ctx', { decorator: 'Inject' });
setOnReady
设置 Configuration setOnReady 的方法的代码
setOnReady(code: string): ConfigurationInstance;
// demo:
codeMod.configuration().setOnReady('console.log(123)');
Denpendency
依赖处理
addToFile
添加依赖到某文件
addToFile(
filePath: string,
denpencyInfo: {
moduleName: string; // 模块名
name: string | string[]; // 导入的变量名,如果是数组,则认为是将内部的变量取出
isNamespace: boolean; // 是否为 import * as xxx 的形式
}
)
// demo
codeMod.denpendency().addToFile(
codeMod.Variables.Configuraion.File,
{
moduleName: '@midwayjs/decorator',
name: ['Inject', 'Config', 'Logger'],
},
)
addToPackage
将依赖添加到package.json
addToPackage(
moduleName: string, // 模块名
version?: string, // 版本,默认为 latest
isDevDependency?: boolean // 是否为开发时依赖,默认为 false
)
// demo
codeMod.denpendency().addToPackage('@midwayjs/decorator', '^1.0.0')
Plugin
插件处理
use
使用某插件
use(pluginName: string, pluginOptions?: any)
// demo
codeMod.plugin().use('test');
codeMod.plugin().use('test2', {
package: '@midwayjs/test'
});
list
列出来所有插件
list(): {
[pluginName: string]: any;
};
// demo
const plugins = codeMod.plugin().list();
plugins.testPlugin === true;