@ddadaal/tsgrpc-cli
v0.14.9
Published
CLI
Downloads
41
Readme
cli: Declarative local and remote gRPC code generation
This package is a wrapper around stephenh/ts-proto that
- allows to configure proto generation declaratively.
- supports generating from git repository
npm install -D @ddadaal/tsgrpc-cli
Usage
Create tsgrpc.json
under the project root with the following content to specify paths to proto files.
{
"targetPath": "src/generated",
"binPath": "../packages/cli/node_modules/.bin",
"protos": [
{
"source": "local",
"local": {
"protoPaths": "./protos",
"files": "./protos/*.proto"
},
"target": "local"
},
{
"source": "git",
"git": {
"repo": "[email protected]:ddadaal/tsgrpc",
"branch": "master",
"files": "example/protos/**/*.proto",
"protoPaths": "example/protos"
},
"target": "git"
}
],
"params": [
"--ts_proto_opt=stringEnums=true"
],
"slient": false
}
All paths are relative to pwd.
| Option | Required? | Description | default |
| ------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| targetPath
| false | The root dir where the generated files will be placed | src/generated
|
| protos
| true | The definitions of the proto files | |
| proto.source
| true | The source of the proto files. Choices: local
: local files git
: git repo |
| proto.local
| if proto.source === "local"
| The local proto file information |
| protos.local.files
| true | The path to proto files relative to cwd. Glob is supported. node-glob is used to match files using glob. | |
| protos.local.protoPaths
| false | Proto files' proto paths relative to cwd (maps to --proto_path
of protoc
command). Can be string
or string[]
| path.dirnames(files)
|
| proto.git
| if proto.source === "git"
| The local proto file information |
| protos.local.repo
| true | The repo URL | |
| protos.local.branch
| false | The branch or tag of repo. Cannot be commit SHA | |
| protos.local.files
| true | The path to proto files relative to repo root. Glob is supported. node-glob is used to match files using glob. | |
| protos.local.protoPaths
| false | Proto files' proto paths relative to repo root(maps to --proto_path
of protoc
command). Can be string
or string[]
| path.dirnames(files)
|
| protos.target
| false | The directory under targetPath
where the generated files of this part of proto files will placed. | .
|
| preset
| false | Parameters preset. Different preset generates files to be used with different framework. Choices: nice-grpc
for nice-grpc grpc-js
for grpc-js
and @ddadaal/tsgrpc-server
| grpc-js
|
| params
| false | Extra parameters to be passed in to protoc
command | []
|
| slient
| false | Don't console.log anything | false
|
Run the following command, and the files will be generated to ${targetPath}/${name}
.
npx tsgrpc-cli protos
pnpm Compatibility
Unlike npm and yarn, pnpm doesn't create a flat node_modules structure, and as a result, pnpm doesn't install binaries to dependencies.
This behavior makes pnpm incompatible with @ddadaal/tsgrpc-cli
, since @ddadaal/tsgrpc-cli
uses grpc-tools
and ts-proto
as dependencies and requires their binaries to be installed under node_modules/.bin
.
To resolve this, you can use pnpm's public-host-pattern config to explicitly hoist these binaries under node_modules/.bin
.
Create a .npmrc
under the root of your project with following content:
public-hoist-pattern[]=ts-proto
public-hoist-pattern[]=grpc-tools
; The default value for this config is *eslint* and *prettier*
; if you are using them, add them back
public-hoist-pattern[]=*eslint*
public-hoist-pattern[]=*prettier*