An Nx plugin for performing codegen from Protobuf/gRPC projects using Buf.
To install this plugin, run the following command:
npm install @gorilainvest/nx-buf
And add it to the list of plugins in nx.json
:
{
// ...
"plugins": [
// ...
"@gorilainvest/nx-buf"
]
}
This plugin assumes that you have a separate Nx project in your workspace that contains your .proto
files, as well as buf.yaml
and buf.gen.yaml
in that project root.
To enable linting a buf
project, use the @gorilainvest/nx-buf:lint
executor in that project's project.json
:
{
// ...
"targets": {
"lint": {
"executor": "@gorilainvest/nx-buf:lint"
}
}
}
To generate source files from a buf
project into another project, use the @gorilainvest/nx-buf:generate
executor in the destination project:
{
// ...
"targets": {
"proto-gen": {
"executor": "@gorilainvest/nx-buf:generate",
"outputs": ["{projectRoot}/{options.copyTo}"],
"options": {
"srcProject": "proto",
"copyFrom": ["gen/*"],
"copyTo": "src/gen",
"options": "--include-imports"
}
},
"build": {
"dependsOn": ["proto-gen"],
// ...
}
}
}
The options are as follows:
srcProject
: the project from where to grab the generated sources after runningbuf generate
.copyFrom
: a list of glob patterns to copy from that project, relative to its root.copyTo
: the destination folder, relative to the target project.options
: (optional) additional command-line arguments to pass tobuf generate
.
This plugin will automatically establish a dependency between any project that contain a @gorilainvest/nx-buf:generate
target and the respective project specified in options.srcProject
.