如何不编译修改文件运行`iex -S mix`?或启动应用上次编译版本?
刚好这两个场景在Elixir日常开发中挺常见的,给你分享靠谱的解决方式:
1. 不编译已修改文件启动iex -S mix
直接给Mix加上--no-compile参数就能跳过编译步骤,命令如下:
iex -S mix run --no-compile
这个参数会让Mix完全跳过编译阶段,直接用上一次成功编译后的代码启动IEx。特别适合你修改了文件但暂时不想编译,只想验证其他逻辑的场景。
2. 跳过编译错误,用上一次编译版本启动
当新模块代码未完成导致编译失败时,首先可以试试上面的--no-compile参数。但如果Mix因为新增了文件而强制尝试编译(比如刚创建了一个新的.ex文件但代码写了一半),还有个更稳妥的办法:直接加载已编译好的BEAM文件启动IEx。
假设你的项目是标准Mix结构,编译后的BEAM文件存放在_build/dev/lib/[你的应用名]/ebin目录下,你可以用这条命令启动:
iex -pa _build/dev/lib/your_app/ebin
这里的-pa参数是告诉IEx把指定目录添加到代码搜索路径中,这样就能直接加载之前成功编译的所有模块。如果你的应用依赖了其他库,Mix其实已经自动处理了依赖的路径,所以大多数情况下这条命令就足够用了。
另外还有个小技巧:如果只是单个修改的文件有问题,你可以临时把这个文件重命名(比如改成my_module_temp.ex),这样Mix就不会尝试编译它,之后正常运行iex -S mix就能用上一次的编译版本,等需要继续开发时再改回原名即可。
内容的提问来源于stack exchange,提问作者Morozov
相关产品推荐
相关产品推荐

