# use-package-json
`package.json` metadata primitives for `RustUse`.
## Experimental
`use-package-json` is experimental while `use-js` remains below `0.3.0`.
## Example
```rust
use use_package_json::{DependencyKind, PackageJson, PackageName, PackageScript, PackageScriptName, PackageType, PackageVersion};
let manifest = PackageJson::new()
.with_name(PackageName::new("@rustuse/example")?)
.with_version(PackageVersion::new("0.1.0")?)
.with_package_type(PackageType::Module)
.with_script(PackageScriptName::new("test")?, PackageScript::new("vitest")?)
.with_dependency(DependencyKind::Dependencies, PackageName::new("react")?, PackageVersion::new("^18")?);
assert!(manifest.name().is_some_and(PackageName::is_scoped));
# Ok::<(), use_package_json::PackageJsonTextError>(())
```
## Scope
- Lightweight package names, versions, scripts, dependency maps, and package type metadata.
- Optional serde derives behind the `serde` feature.
## Non-goals
- Full npm registry validation.
- JSON parsing or formatting.
- Registry API behavior.
## License
Licensed under either Apache-2.0 or MIT.