Spec-Zone.ru › Deno 2

deno ci

deno ci выполняет воспроизводимую установку для CI-сред, аналогично npm ci. Используйте эту команду в CI-скриптах и Dockerfile, если вам нужна одна команда, которую легко найти и которая гарантированно установит именно то, что указано в файле блокировки, — без расхождений, оставшихся после предыдущих запусков состояний и неожиданностей.

›_
deno ci

Что делает команда

deno ci примерно эквивалентна следующей последовательности:

›_
rm -rf node_modules
deno install --frozen

но обеспечивает более строгую обработку ошибок и понятнее сообщает об их причинах:

  1. Требует наличия файла блокировки. Если deno.lock отсутствует или недоступен для чтения, deno ci завершится с ошибкой, а не создаст его. Это гарантирует, что при двух запусках для одного и того же коммита будут установлены одни и те же версии.
  2. Сначала удаляет node_modules. Перед установкой удаляется любое устаревшее состояние, оставшееся после предыдущего шага CI (или случайно сохранённой установки для разработки), чтобы итоговая структура отражала только разрешённые файлом блокировки зависимости.
  3. Фиксирует разрешение зависимостей с помощью --frozen. Если deno.json или package.json изменён без повторного запуска deno install для обновления файла блокировки, команда завершится с ошибкой. Так можно выявить ошибку «обновил версию, но забыл зафиксировать файл блокировки» до того, как она попадёт в production.

Если любая из этих проверок завершится ошибкой, установка не будет запущена.

Когда использовать

Сценарий Команда
Сборка / тестирование / проверка стиля в CI deno ci
Production-образ Docker deno ci --prod
Локальная разработка (частые изменения) deno install
Добавление или удаление пакета deno add / deno remove
Первоначальная настройка (файла блокировки ещё нет) deno install

Общее правило: выбирайте deno ci, если установка должна быть воспроизводимой и файл блокировки не должен изменяться. Выбирайте deno install, если вы вносите изменения в зависимости.

Примеры

GitHub Actions

.github/workflows/test.yml
name: Test

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: denoland/setup-deno@v2
        with:
          deno-version: v2.x
      - run: deno ci
      - run: deno test
      - run: deno lint
      - run: deno fmt --check

Dockerfile для production

FROM denoland/deno:2.8.0
WORKDIR /app

# Copy the manifest files first so install caches well
COPY deno.json deno.lock package.json* ./
RUN deno ci --prod

# Then copy the rest of the source
COPY . .
CMD ["deno", "run", "-A", "main.ts"]

Разделение COPY на этапы «сначала манифесты, затем исходный код» позволяет Docker повторно использовать слой deno ci, пока зависимости не меняются.

Установка для production на хосте

›_
deno ci --prod --skip-types

--prod исключает devDependencies из package.json. --skip-types удаляет пакеты @types/* как из импортов deno.json, так и из зависимостей package.json — это полезно для артефактов развёртывания, где типы увеличивают размер и не нужны во время выполнения.

Распространённые причины ошибок

Ошибка Вероятная причина Решение
«deno.lock отсутствует» Файл блокировки не добавлен в коммит. Запустите deno install локально и добавьте полученный файл deno.lock в коммит.
«файл блокировки устарел» Зависимость добавлена или обновлена в deno.json / package.json, но файл блокировки не обновлён. Запустите deno install локально и добавьте обновлённый файл deno.lock в коммит.
Запросы на подтверждение скриптов сборки в CI без TTY Новый пакет npm пытается запустить скрипты жизненного цикла, выполнение которых не было разрешено. Разрешите их локально с помощью deno approve-scripts и добавьте разрешения в коммит.

См. также

  • deno install — повседневная установка с полным описанием параметров
  • Непрерывная интеграция — руководство по запуску Deno в GitHub Actions и других CI-системах
  • deno audit — поиск известных уязвимостей в зависимостях; дополняет deno ci в CI
  • deno approve-scripts — управление разрешёнными скриптами жизненного цикла npm
Использование в командной строке:
deno ci [OPTIONS]

Установите зависимости в чистом и воспроизводимом виде для CI-сред.

Аналогично npm ci: требует наличия файла deno.lock, удаляет существующий каталог node_modules, а затем устанавливает зависимости строго по файлу блокировки. Завершается с ошибкой, если deno.lock отсутствует или не соответствует файлу конфигурации.

deno ci
deno ci --prod

Параметры

--env-file<FILE>необязательный

Загрузить переменные окружения из локального файла. Для каждого ключа используется только первая переменная окружения с таким именем. Существующие переменные окружения процесса не перезаписываются, поэтому их значения сохраняются, если переменные с такими же именами уже заданы в окружении. Если в файле .env есть несколько объявлений одной и той же переменной окружения, применяется первое найденное. Порядок определяется последовательностью файлов, переданных в качестве аргументов.

--prod

Устанавливать только production-зависимости (исключая devDependencies).

--skip-types

Не устанавливать пакеты @types/*. Будьте осторожны: используется эвристика на основе имени, поэтому могут быть пропущены пакеты с кодом, необходимым во время выполнения.

Последнее обновление: 20 мая 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/ci

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API