如何让 Phoenix live reload 忽略临时文件?

How to let Phoenix live reload ignore temp files?

Emacs 在编辑缓冲区时生成一个临时文件,例如编辑 a.html.eex 会产生 .#a.html.eex。不幸的是,由于文件扩展名匹配,Phoenix 实时重新加载也会在这种情况下触发。有什么方法可以让实时重新加载忽略此类文件从而禁用此行为吗?

您可以修改 config/dev.exs 中的正则表达式以仅匹配不包含 #.

的路径

config/dev.exs中,更改:

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

至:

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

TL;DR

这样做:

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

说明

documentation 建议这样的正则表达式:

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

我们案例中的问题是 .* 部分匹配任何东西 包括 /, 但我们需要能够在文件名的 start 处捕获 .#

所以我们执行以下操作:

  1. 匹配初始路径片段...web/templates,
  2. 递归到子目录,
  3. 忽略任何以 .#
  4. 开头的内容
  5. 接受任何扩展名为 .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

中的正则表达式