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

Analyzes the `sideEffects` field from package.json.

Used by bundlers (webpack, rollup, esbuild) for tree-shaking.

# `file_has_side_effects?`

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

Checks if a specific file has side effects.

# `files_with_side_effects`

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

Returns files with side effects (when sideEffects is an array).

# `get`

```elixir
@spec get(map()) :: boolean() | [String.t()] | nil
```

Extracts the sideEffects value.

# `has_side_effects?`

```elixir
@spec has_side_effects?(map()) :: boolean()
```

Checks if the package declares any side effects.

# `stats`

```elixir
@spec stats([map()]) :: map()
```

Counts tree-shakeable packages.

# `tree_shakeable?`

```elixir
@spec tree_shakeable?(map()) :: boolean()
```

Checks if the package is fully tree-shakeable (sideEffects: false).

---

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