![](/img/trans.png)
[英]How do I recompile an Elixir project and reload it from within iex?
[英]Make elixir app recompile and reload on source code change
每次修改源代碼時如何自動重新編譯和重新加載我的iex + mix應用程序?
如果iex + mix組合無法做到這一點,那么最簡單的選擇是什么? 我已經檢查了鳳凰的重載方式,對我的小測試項目來說似乎並不容易實現。
我也知道José的.iex.exs
:
defmodule R do
def reload! do
Mix.Task.reenable "compile.elixir"
Application.stop(Mix.Project.config[:app])
Mix.Task.run "compile.elixir"
Application.start(Mix.Project.config[:app], :permanent)
end
end
我並不是非常高興,因為它不會在代碼更改時自動重新加載,我仍然需要鍵入R.reload!
在iex上。
並且..請幫我在stackoverflow上創建“iex”標簽,我的聲譽還不夠:)
我認為這就是你要找的: https : //github.com/AgilionApps/remix
目前iex
有一個內部函數來執行此操作:
在iex
控制台中調用IEx.Helpers.recompile 。
我所知道的最近的事情是@cheini的Alchemist for emacs。 在Alchemist中,有一個啟用選項
(setq alchemist-hooks-test-on-save t)
這使得它在您保存時編譯並運行測試。
對於Erlang,我使用“relx -d”和https://github.com/rustyio/sync“-d ”表示源文件使用符號鏈接進行鏈接。
這同樣適用於Elixir。 在mix.exs中我添加了:在以下兩個地方同步
defp deps do
[{:sync, git: "https://github.com/rustyio/sync.git", tag: "master"}, ....
def application do
[applications: [:logger, :sync],
然后,以下命令將其編譯為一個版本(在它工作之前,您將必須安裝hex和exrm)。
mix release -dev
現在,當您更改.ex文件並保存時,它將被重新編譯並直接加載。
19:33:46.474 [info] ... /apps/testapp1/lib/kv/bucket.ex:0: Recompiled.
您只想在開發環境中同步!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.