# `NPM.Install.ScriptRunner`
[🔗](https://github.com/elixir-volt/npm_ex/blob/v0.7.4/lib/npm/install/script_runner.ex#L1)

Analyzes and validates npm scripts from package.json.

# `count`

```elixir
@spec count(map()) :: non_neg_integer()
```

Counts scripts.

# `custom`

```elixir
@spec custom(map()) :: map()
```

Returns non-lifecycle (custom) scripts.

# `detect_patterns`

```elixir
@spec detect_patterns(map()) :: [atom()]
```

Detects common script patterns.

# `extract`

```elixir
@spec extract(map()) :: map()
```

Extracts scripts from package.json.

# `has_script?`

```elixir
@spec has_script?(map(), String.t()) :: boolean()
```

Checks if a specific script exists.

# `lifecycle`

```elixir
@spec lifecycle(map()) :: map()
```

Returns lifecycle scripts defined in the package.

# `missing_common`

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

Returns common scripts that are missing.

# `names`

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

Returns all script names sorted.

---

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