Как позволить Phoenix live reload игнорировать временные файлы?

Emacs создает временный файл при редактировании буфера, например. редактирование a.html.eex приведет к .#a.html.eex. К сожалению, поскольку расширение файла совпадает, в таких случаях также будет запускаться перезагрузка Phoenix. Есть ли способ позволить живой перезагрузке игнорировать такие файлы и, таким образом, отключить это поведение?


person xji    schedule 06.05.2018    source источник


Ответы (2)


Вы можете изменить регулярное выражение в config/dev.exs, чтобы оно соответствовало только путям, не содержащим #.

В config/dev.exs измените:

~r{web/templates/.*(eex)$}

to:

~r{web/templates/[^#]*(eex)$}
person Dogbert    schedule 06.05.2018

TL;DR

Сделай это:

~r{web/templates/([^/]+/)*(?!\.\#)[^/]*\.eex$}

Объяснение

документация предлагает такое регулярное выражение :

~r{web/templates/.*(eex)$}

Проблема в нашем случае заключается в том, что часть .* соответствует чему угодно, включая /, но нам нужно иметь возможность поймать .# в начале имени файла.

Итак, мы делаем следующее:

  1. соответствует фрагменту начального пути ...web/templates,
  2. рекурсия в подкаталоги,
  3. игнорировать все, что начинается с .#
  4. принять любой файл с расширением .eex.

Написано как расширенное регулярное выражение, это:

~r{
  web/templates/
  ([^/]+/)*        # recurse into directories
  (?!\.\#)         # ignore Emacs temporary files (`.#` prefix)
  [^/]*            # accept any file character
  \.eex$           # accept only .eex files
}x

Это то, что я вставил в config/dev.exs, но, если вы хотите быть более кратким, используйте регулярное выражение из TL; DR

person titusd    schedule 26.04.2019