簡體   English   中英

讓elixir應用程序重新編譯並重新加載源代碼更改

[英]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)

這使得它在您保存時編譯並運行測試。

https://github.com/tonini/alchemist.el#testing

對於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM