Socket
Socket
Sign inDemoInstall

@ddadaal/tsgrpc-cli

Package Overview
Dependencies
97
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @ddadaal/tsgrpc-cli

CLI


Version published
Weekly downloads
36
increased by3500%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

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-server
grpc-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*

FAQs

Last updated on 18 Nov 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc