Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@ddadaal/tsgrpc-cli

Package Overview
Dependencies
Maintainers
0
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ddadaal/tsgrpc-cli

CLI

  • 0.15.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2
Maintainers
0
Weekly downloads
 
Created
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*

ts-proto v2 migration from v0.15

From v0.15, this package uses ts-proto v2 to generate ts files from protos. From v2 ts-proto has migrated to use @bufbuild/protobuf instead of the old protobufjs package for protobuf encoding and decoding (changelog), so after you updated the package, you need to migrate your package.json as follows:

  1. Remove protobufjs and long packages
  2. Add @bufbuild/protobuf package

FAQs

Package last updated on 09 Sep 2024

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc