0.14.9 • Published 6 months ago

@ddadaal/tsgrpc-cli v0.14.9

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

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": "git@github.com: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.

OptionRequired?Descriptiondefault
targetPathfalseThe root dir where the generated files will be placedsrc/generated
protostrueThe definitions of the proto files
proto.sourcetrueThe source of the proto files. Choices: local: local files git: git repo
proto.localif proto.source === "local"The local proto file information
protos.local.filestrueThe path to proto files relative to cwd. Glob is supported. node-glob is used to match files using glob.
protos.local.protoPathsfalseProto files' proto paths relative to cwd (maps to --proto_path of protoc command). Can be string or string[]path.dirnames(files)
proto.gitif proto.source === "git"The local proto file information
protos.local.repotrueThe repo URL
protos.local.branchfalseThe branch or tag of repo. Cannot be commit SHA
protos.local.filestrueThe path to proto files relative to repo root. Glob is supported. node-glob is used to match files using glob.
protos.local.protoPathsfalseProto files' proto paths relative to repo root(maps to --proto_path of protoc command). Can be string or string[]path.dirnames(files)
protos.targetfalseThe directory under targetPath where the generated files of this part of proto files will placed..
presetfalseParameters 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-servergrpc-js
paramsfalseExtra parameters to be passed in to protoc command[]
slientfalseDon't console.log anythingfalse

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*
0.14.8

9 months ago

0.14.9

6 months ago

0.14.6

1 year ago

0.14.7

1 year ago

0.14.5

1 year ago

0.14.4

1 year ago

0.14.3

1 year ago

0.13.6

2 years ago

0.14.0

2 years ago

0.14.1

2 years ago

0.14.2

2 years ago

0.13.3

2 years ago

0.13.4

2 years ago

0.13.5

2 years ago

0.13.2

2 years ago

0.13.1

2 years ago

0.13.0

2 years ago

0.11.0

2 years ago

0.10.0

2 years ago

0.9.0

2 years ago

0.8.1

2 years ago

0.8.0

2 years ago

0.7.0

2 years ago

0.6.1

3 years ago

0.6.0

3 years ago

0.4.4

3 years ago

0.5.0

3 years ago

0.4.0

3 years ago

0.4.2

3 years ago

0.3.0

3 years ago

0.2.0

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago