DartLang.PubSpec
3.0.1
dotnet add package DartLang.PubSpec --version 3.0.1
NuGet\Install-Package DartLang.PubSpec -Version 3.0.1
<PackageReference Include="DartLang.PubSpec" Version="3.0.1" />
paket add DartLang.PubSpec --version 3.0.1
#r "nuget: DartLang.PubSpec, 3.0.1"
// Install DartLang.PubSpec as a Cake Addin #addin nuget:?package=DartLang.PubSpec&version=3.0.1 // Install DartLang.PubSpec as a Cake Tool #tool nuget:?package=DartLang.PubSpec&version=3.0.1
DartLang.PubSpec
A library to serialize and deserialize Dart pubspec.yaml files.
Usage
var yaml = File.ReadAllText("pubspec.yaml");
var pubspec = PubSpecYamlSerializer.Deserialize(yaml);
Console.WriteLine($"Name: {pubspec.Name}");
Console.WriteLine($"Version: {pubspec.Version}");
You can also use the JSON serializer:
var json = File.ReadAllText("pubspec.json");
var pubspec = PubSpecJsonSerializer.Deserialize(json);
Custom Deserializer
YAML
You can also build your own deserializer using YamlDotNet
directly:
var deserializer = new DeserializerBuilder()
.IgnoreUnmatchedProperties() // pub.dev will ignore other properties
.WithNamingConvention(UnderscoredNamingConvention.Instance) // dart uses underscores for properties
.WithPubSpecConverters() // converters for custom types
.Build();
return deserializer.Deserialize<PubSpec>(reader);
JSON
In case you need to use custom JsonSerializerOptions
, you can reuse the converters from DartLang.PubSpec.Serialization.Json
:
var json = File.ReadAllText("pubspec.json");
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters =
{
new SemVersionJsonConverter(),
new SemVersionRangeJsonConverter(),
new DependencyMapJsonConverter(),
new PlatformsJsonConverter(),
},
};
return JsonSerializer.Deserialize<PubSpec>(json, options);
Serialization
Serialization is currently not supported, but should not be hard to implement yourself.
License
MIT
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- Semver (>= 3.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on DartLang.PubSpec:
Package | Downloads |
---|---|
DartLang.PubSpec.Serialization.Json
A library to serialize and deserialize Dart pubspec.yaml files |
|
DartLang.PubSpec.Serialization.Yaml
A library to serialize and deserialize Dart pubspec.yaml files |
GitHub repositories
This package is not used by any popular GitHub repositories.
# 3.0.1
* (internal) Upgraded test packages
* Updated SemVer to 3.0.0
* `PubSpecYamlConverter::DeserializeAsync` now leaves the stream open by default (configurable using `leaveOpen` parameter)
# 3.0.0
* Breaking: Renamed `PubSpecJsonSerializer` to `PubSpecJsonConverter`
* Breaking: Renamed `PubSpecYamlSerializer` to `PubSpecYamlConverter`
* Added more and also async overloads for de-/serialization in `PubSpecJsonConverter` and `PubSpecYamlConverter`
# 2.0.0
* Split de-/serialization for YAML into a separate package: `DartLang.PubSpec.Serialization.Yaml`
* Added support for de-/serializing JSON files using `DartLang.PubSpec.Serialization.Json`
# 1.1.0
* Upgraded to YamlDotNet 16.1.3
# 1.0.0
* Initial release 🎉
* Support for deserializing pubspec.yaml files using `PubSpec.Deserialize(String yaml)` and `PubSpec.Deserialize(StringReader reader)`.
* You can also build your own deserializer using:
```csharp
var deserializer = new DeserializerBuilder()
.IgnoreUnmatchedProperties() // pub.dev will ignore other properties
.WithNamingConvention(UnderscoredNamingConvention.Instance) // convention
.WithPubSpecConverters() // converters for custom types
.Build();
return deserializer.Deserialize<PubSpec>(reader);
```