Режим наблюдения и 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 не затрагивается, поскольку каждое изменение вызывает полный перезапуск, который заново устанавливает наблюдателей.
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/run/watch_mode