@ddadaal/tsgrpc-cli
TypeScript icon, indicating that this package has built-in type declarations

0.14.9 • Public • Published

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.

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*

Readme

Keywords

none

Package Sidebar

Install

npm i @ddadaal/tsgrpc-cli

Weekly Downloads

0

Version

0.14.9

License

MIT

Unpacked Size

39.9 kB

Total Files

19

Last publish

Collaborators

  • ddadaal