# `NPM.Package.Manifest`
[🔗](https://github.com/elixir-volt/npm_ex/blob/v0.7.4/lib/npm/package/manifest.ex#L1)

Generate a complete package manifest from `package.json`.

Aggregates data from the package.json file into a structured
manifest used by publishing, auditing, and analysis tools.

# `t`

```elixir
@type t() :: %{
  name: String.t() | nil,
  version: String.t() | nil,
  license: String.t() | nil,
  module_type: :esm | :cjs,
  dependencies: %{required(String.t()) =&gt; String.t()},
  dev_dependencies: %{required(String.t()) =&gt; String.t()},
  optional_dependencies: %{required(String.t()) =&gt; String.t()},
  scripts: %{required(String.t()) =&gt; String.t()},
  engines: %{required(String.t()) =&gt; String.t()},
  exports: map() | nil,
  files: [String.t()] | nil
}
```

# `all_dep_names`

```elixir
@spec all_dep_names(t()) :: [String.t()]
```

Get all dependency names across all types.

# `dep_count`

```elixir
@spec dep_count(t()) :: non_neg_integer()
```

Count total dependency count across all types.

# `from_file`

```elixir
@spec from_file(String.t()) :: {:ok, t()} | {:error, term()}
```

Build a manifest from a `package.json` file.

# `from_json`

```elixir
@spec from_json(String.t()) :: t()
```

Build a manifest from a JSON string.

# `has_scripts?`

```elixir
@spec has_scripts?(t()) :: boolean()
```

Check if the manifest has any scripts defined.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
