grpc-code-gen
v6.1.22
Published
Code generator for grpc, for typescript and javascript.
Downloads
54
Readme
grpc-code-gen
Code generator for grpc, for typescript and javascript.
CLI usage
grpc-code-gen gen -u [email protected]:2c/panther-statistics-proto.git,[email protected]:2c/panther-third-proto.git -b test -t ${token} -d test/code-gen-cli
Set params by config file
//grpc-code-gen.config.js
module.exports = {
gitUrls: [
{
url: '[email protected]:ykcommon/ykproto.git',
branch: 'master',
},
// 服务依赖proto
{
url: '[email protected]:ykcommon/common-proto.git',
branch: 'master',
type:'lib'
},
{
url: '[email protected]:2c/panther-statistics-proto.git',
// panther-statistics 服务proto依赖于 common-proto
deps:['[email protected]:ykcommon/common.git']
},
{
url: '[email protected]:2c/panther-third-proto.git',
host: 'panther-third', // go 服务别名
}
],
branch: 'test',
accessToken: '${token}',
baseDir: `${__dirname}/code-gen`,
resolvePath: (origin, target, rootDir) => {
if (/^git\.myscrm\.cn\/golang\/common\/proto\/(google|common)\//.test(target)) {
return `${rootDir}/git.myscrm.cn/ykcommon/ykproto/${target.replace(/^git\.myscrm\.cn\/golang\/common\/proto\//, '')}`;
} else if (/^proto\/(common|google)\//.test(target)) {
return `${rootDir}/git.myscrm.cn/ykcommon/ykproto/${target.replace(/^proto\//, '')}`;
} else if (/^proto\//.test(target)) {
return target.replace(/^proto\/([^\/]+)(.+)/, (_target, $1, $2) => {
return `${rootDir}/git.myscrm.cn/2c/${$1.replace(/_/g, '-')}${$2}`;
});
} else if (/^(common|google\/api)\//.test(target)) {
return `${rootDir}/git.myscrm.cn/ykcommon/ykproto/${target}`;
}
return null;
},
};
then
grpc-code-gen gen
Params
参数 | 类型 | 说明 | 默认值
---|---|---|---
gitUrls | Array<string | {url: string, branch?: string, accessToken?: host?: string }> | 仓库地址数组 | null
branch | string | 分支,如参数没有,会去读取环境变量参数branch
| null
accessToken | string | git access token | null
baseDir? | string | 生成目录 | null
target? | javascript typescript
| 目标语言 | null
grpcNpmName? | string | grpc npm name, 可取值:grpc
, @grpc/grpc-js
| grpc
jsonSemanticTypes? | boolean | 生成json semantic types | false
loaderOptions? | LoaderOptions | loader生成配置 | { defaults: true }
callOptions? | callOptions | 方法调用配置 | null
logOptions? | logOptions | 日志配置 | null
filterError? | (err: Error) => Error | 错误过滤 | (err) => err
loadProtoPlugin? | (option: IGitConfigWithUrl) => Promise | proto加载插件 | unll
callOptions
参数 | 类型 | 说明 | 默认值 ---|---|---|--- timeout? | number | 超时时间,单位:ms | undefined
logOptions
参数 | 类型 | 说明 | 默认值
---|---|---|---
disable? | boolean | 是否启用 | false
attributes? | string[] | 记录字段,request, response
| ['request']
Program usage
const base = require('grpc-code-gen/build/base');
base.gen({
gitUrls: [
{
url: '[email protected]:ykcommon/ykproto.git',
branch: 'master',
},
'[email protected]:2c/panther-statistics-proto.git',
'[email protected]:2c/panther-third-proto.git',
],
branch: 'test',
accessToken: process.env.token,
baseDir: `${__dirname}/code-gen`,
resolvePath: (origin, target, rootDir) => {
if (/^git\.myscrm\.cn\/golang\/common\/proto\/(google|common)\//.test(target)) {
return `${rootDir}/git.myscrm.cn/ykcommon/ykproto/${target.replace(/^git\.myscrm\.cn\/golang\/common\/proto\//, '')}`;
} else if (/^proto\/(common|google)\//.test(target)) {
return `${rootDir}/git.myscrm.cn/ykcommon/ykproto/${target.replace(/^proto\//, '')}`;
} else if (/^proto\//.test(target)) {
return target.replace(/^proto\/([^\/]+)(.+)/, (_target, $1, $2) => {
return `${rootDir}/git.myscrm.cn/2c/${$1.replace(/_/g, '-')}${$2}`;
});
} else if (/^(common|google\/api)\//.test(target)) {
return `${rootDir}/git.myscrm.cn/ykcommon/ykproto/${target}`;
}
return null;
},
})
.catch((err)=>{
console.error(err.stack)
});
版本说明
v6.1.13 版本 gitUrls配置新增服务别名配置项
v6.1.0 版本 gitUrls配置新增依赖项
v6.0.6 版本 新增 access 日志链路
v6.0.4 版本 新增 grpc-service.dev.config.js 本地配置,去掉繁琐的本地host配置
v6.0.3 版本 解决编译go proto枚举报错问题
v6.0.0 版本 解决grpc-code-gen编译时,后端相同package下有相同service的冲突问题
v5.4.4 版本 解决javascript精度文档,js在超过16位的number数字会有精度丢失问题,因此统一把('double', 'float', 'int64', 'uint64', 'sint64', 'fixed64', 'sfixed64')类型转换为string类型
v5.3.0 版本 bff grpc 新增热重启功能