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

Implements `NPM.install/2` for script-style usage outside Mix projects.

The public `NPM.install/2` API works like `Mix.install/2`: dependencies are
resolved once per BEAM VM, installed into a content-addressed directory, and
exposed through `NPM.install_dir!/0` and `NPM.node_modules_dir!/0`.

Installs are cached by dependency map and guarded with `:persistent_term` so a
running VM cannot accidentally switch to a different npm dependency set after
code has already loaded packages from the first install.

# `install`

```elixir
@spec install(
  map(),
  keyword()
) :: :ok
```

# `install_dir!`

```elixir
@spec install_dir!() :: String.t()
```

# `installed?`

```elixir
@spec installed?() :: boolean()
```

# `node_modules_dir!`

```elixir
@spec node_modules_dir!() :: String.t()
```

---

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