如何让 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 处捕获 .#
。
所以我们执行以下操作:
- 匹配初始路径片段
...web/templates
,
- 递归到子目录,
- 忽略任何以
.#
开头的内容
- 接受任何扩展名为
.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
中的正则表达式
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 处捕获 .#
。
所以我们执行以下操作:
- 匹配初始路径片段
...web/templates
, - 递归到子目录,
- 忽略任何以
.#
开头的内容
- 接受任何扩展名为
.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