Spec-Zone.ru › Deno 2

Режим наблюдения и HMR

В Deno встроен файловый наблюдатель, поэтому для перезагрузки программы во время редактирования вам не нужны nodemon или какие-либо другие внешние инструменты. На этой странице описано, за какими файлами ведётся наблюдение, как исключить пути и как работает горячая замена модулей.

Режим наблюдения

Чтобы включить встроенный файловый наблюдатель, можно передать флаг --watch командам deno run, deno test и deno fmt. Наблюдатель автоматически перезагружает приложение при обнаружении изменений в исходных файлах. Это особенно полезно при разработке: вы сразу видите результат изменений, не перезапуская приложение вручную.

deno run --watch main.ts
deno test --watch
deno fmt --watch

Набор файлов, за которыми ведётся наблюдение, зависит от используемой подкоманды:

  • для deno run и deno test отслеживаются точка входа и все локальные файлы, статически импортируемые из неё.
  • для deno fmt отслеживаются все локальные файлы и каталоги, указанные в качестве аргументов командной строки (или рабочий каталог, если конкретные файлы или каталоги не указаны).

Исключить пути или шаблоны из наблюдения можно с помощью флага --watch-exclude. Синтаксис: --watch-exclude=path1,path2. Например:

deno run --watch --watch-exclude=file1.ts,file2.ts main.ts

Так файлы file1.ts и file2.ts не будут отслеживаться.

Чтобы исключить шаблон, заключите его в кавычки, чтобы оболочка не раскрыла шаблон подстановки:

deno run --watch --watch-exclude='*.js' main.ts

Горячая замена модулей

deno run также поддерживает флаг --watch-hmr, который выполняет горячую замену изменённых модулей в запущенном процессе вместо его перезапуска. Это позволяет сохранять состояние приложения между изменениями. Если горячая замена не удаётся, процесс переходит к полному перезапуску.

deno run --watch-hmr main.ts

Поскольку это распространённый процесс разработки, deno watch — это сокращённая форма команды deno run --watch-hmr:

deno watch main.ts

Редакторы с атомарным сохранением

В некоторых редакторах используется «атомарное сохранение» (также называемое безопасной записью): при каждом сохранении редактор записывает изменения во временный файл, а затем переименовывает его, заменяя исходный файл. В Linux это заменяет файл на диске новым, из-за чего файловый наблюдатель, используемый --watch-hmr, может потерять связь с файлом после первого изменения. В результате горячая замена срабатывает один раз, а затем перестаёт обнаруживать дальнейшие изменения этого модуля.

Если вы столкнулись с этой проблемой, отключите атомарное сохранение в редакторе:

  • Helix: задайте [editor] atomic-save = false (по умолчанию эта настройка включена).
  • Neovim/Vim: задайте :set backupcopy=yes.

Обычный режим --watch не затрагивается, поскольку каждое изменение вызывает полный перезапуск, который заново устанавливает наблюдателей.

Последнее обновление: 25 июня 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/run/watch_mode

Spec-Zone.ru

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