Do not publish every project as nuget package
vchekan opened this issue · comments
Is your feature request related to a problem? Please describe.
We publish 7 nuget packages, which does not make sense because most projects are not standalone and make sense only as part of Falanx.Tool project. Instead we should publish 2 project: development dependecies, i.e. command line tool and runtime dependency (if any).
Describe the solution you'd like
Runtime dependency should not include dependencies which make sense for protobuf compiling stage.
About packages
The Falanx.Tool
is the .net core global tool (dotnet tool install -g Falanx.Tool
and falanx --help
)
Is not needed by sdk integration, and is useful as standalone.
The Falanx.Sdk
is the only needed by sdk integration, and bundle the falanx executable too (it doesnt reference the Falanx.Tool
). It's used as compile time (with the PrivateAssets="All"
).
The Falanx.Proto.Codec.Binary
and Falanx.Proto.Codec.Json
are separated, because each support a single format with different package dependencies (like Newtonsoft.Json
for json and Froto.Serialization
for binary).
So end user can choose what they need, and can also use both together. used at runtime.
Up to here is ok i think.
These last two packages are common parts a bit entangled, needed at runtime because deps of the Falanx.Proto.Codec.*
.
The Falanx.Proto.Core
reference the protobuff parser lib Froto.Parser
and Falanx.Machinery
.
The Falanx.Machinery
contains stuff needed and deps like Fantomas
, FsAST
and FCS
.
These can be a bit splitted, to have only runtime deps:
.Json
->Fleece.NewtonsoftJson
,Newtonsoft.Json
.Binary
->Froto.Parser
and a shared helper lib if needed to make generated code simpler, who can be shared by both Falanx.Proto.Codec.*
So one package less (or two if we remove the shared package), but less entangled
This done?
Closing, runtime deps are now separated from generator deps