lib/mix/tasks/npm.ci.ex
defmodule Mix.Tasks.Npm.Ci do
@shortdoc "Install from lockfile (CI mode)"
@moduledoc """
Install npm packages in CI mode.
mix npm.ci
Equivalent to `mix npm.install --frozen`. Fails if `npm.lock` doesn't
match `package.json`, ensuring reproducible builds.
"""
use Mix.Task
@impl true
def run([]) do
Application.ensure_all_started(:req)
NPM.install(frozen: true)
end
def run(_) do
Mix.shell().error("Usage: mix npm.ci")
end
end