An open API service indexing awesome lists of open source software.

https://github.com/midwayjs/midway-code-mod

midway code operation
https://github.com/midwayjs/midway-code-mod

Last synced: over 1 year ago
JSON representation

midway code operation

Awesome Lists containing this project

README

          

# Midway CodeMod

代码操作工具,便捷修改 midway serverless项目的 config / configuration

## Install
```shell
$ npm i @midwayjs/code-mod -S
```

## Usage

```typescript
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

设置配置
```typescript
set(key: string, multiEnvConfig: { [env: string]: any }): ConfigInstance;

// demo:
codeMod.config().set(
'test', // 配置的key
{ // 多环境的配置
local: 123,
default: 200,
}
)
```
#### get

列举某环境下的所有配置
```typescript
get(key: string, env: string): any;
// demo:
const value = codeMod.config().get('test', 'local');
value === 123;
```

#### list

列举某环境下的所有配置
```typescript
list(env: string): {
[configName: string]: any;
};
// demo:
const configs = codeMod.config().list()
```

### Configuration

操作IoC配置

#### setImportConfigs

设置IoC要加载的配置文件、配置文件目录

```typescript
setImportConfigs(configList: string[]): ConfigurationInstance;

// demo:
codeMod.configuration().setImportConfigs(['./config/']);
```

#### setImports

设置IoC要加载的外部模块

```typescript
setImports(configModuleList: string[]): ConfigurationInstance;

// demo:
codeMod.configuration().setImports(['@midwayjs/faas-middleware-static-file']);
```

#### setProperty

设置 Configuration Class 的属性

```typescript
setProperty(propertyName: string, propertyInfo?: { decorator: string;}): ConfigurationInstance;

// demo:
codeMod.configuration().setProperty('ctx', { decorator: 'Inject' });
```

#### setOnReady

设置 Configuration setOnReady 的方法的代码

```typescript
setOnReady(code: string): ConfigurationInstance;

// demo:
codeMod.configuration().setOnReady('console.log(123)');
```

### Denpendency

依赖处理

#### addToFile

添加依赖到某文件

```typescript
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

```typescript
addToPackage(
moduleName: string, // 模块名
version?: string, // 版本,默认为 latest
isDevDependency?: boolean // 是否为开发时依赖,默认为 false
)

// demo
codeMod.denpendency().addToPackage('@midwayjs/decorator', '^1.0.0')
```

### Plugin

插件处理

#### use

使用某插件

```typescript
use(pluginName: string, pluginOptions?: any)

// demo
codeMod.plugin().use('test');
codeMod.plugin().use('test2', {
package: '@midwayjs/test'
});
```

#### list

列出来所有插件

```typescript
list(): {
[pluginName: string]: any;
};

// demo
const plugins = codeMod.plugin().list();
plugins.testPlugin === true;
```