protocol buffers - Blir relativ import när `buf generate` med `google.type.Date` i TypeScript
När jag körde buf generate på en fil som inkluderade google/type/date.proto, genererades en pb-fil som innehöll en relativ sökväg. Det finns dock ingen fil med den angivna sökvägen. Språket är TypeScript.
// a part of the generated code
import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
import { Date } from "../google/type/date_pb";
Jag förväntade mig att det skulle referera till filerna som exporteras till node_modules (Det fanns inga filer relaterade till google.type i node_modules). Hur kan jag bli av med de relativa sökvägarna?
Filerna som används är följande.
protos/sample/sample.proto är:
syntax = "proto3";
package sample;
import "google/protobuf/empty.proto";
import "google/type/date.proto";
message Sample {
google.type.Date start_date = 1;
}
service SampleService {
rpc Initialize(google.protobuf.Empty) returns (Sample);
}
buf.yaml är:
version: v2
modules:
- path: protos
lint:
use:
- DEFAULT
breaking:
use:
- FILE
deps:
- buf.build/googleapis/googleapis:f0e53af8f2fc4556b94f482688b57223
buf.gen.yaml är:
version: v2
managed:
enabled: true
disable:
- module: buf.build/googleapis/googleapis
plugins:
- remote: buf.build/connectrpc/es:v1.4.0
opt:
- target=ts
- import_extension=none
out: src/gen
- remote: buf.build/bufbuild/es
opt:
- target=ts
- import_extension=none
out: src/gen
Filstruktur och kommandon:
tree
.
├── protos
│ └── sample
│ └── sample.proto
├── buf.gen.yaml
└── buf.yaml
buf dep update
buf generate
Svar #1
Det enda sättet jag har hittat är att lägga till ett par "manuella" (som i, inte hanterade av buf) steg i byggprocessen:
buf export buf.build/googleapis/googleapis --output ./tmp
protoc --js_out=import_style=commonjs,binary:gen/js -I ./tmp google/type/latlng.proto
