You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用Mix时Elixir独立脚本如何导入第三方依赖模块

无Mix项目结构下Elixir独立脚本加载第三方依赖方案

CI场景运行轻量Elixir脚本时,若不想引入完整Mix项目的冗余文件,直接使用Elixir 1.12及以上版本内置的Mix.install/2即可,无需额外创建mix.exs、mix.lock等项目文件,完全适配elixir命令直接运行单文件脚本的场景。

工作流配置示例

修改GitHub Actions配置如下即可正常加载第三方依赖:

- uses: erlef/setup-beam@v1
  with:
    otp-version: ${{ env.OTP_VERSION }}
    elixir-version: ${{ env.ELIXIR_VERSION }} # 需指定1.12及以上版本

- id: main
  run: |
    # 脚本开头直接声明所需第三方依赖
    Mix.install([
      :jason # 替换为实际需要的依赖包,例如JSON处理常用的jason
    ])

    defmodule DoStuff do
      def run do
        # 直接调用依赖提供的模块即可
        %{ci: true, status: "ok"} |> Jason.encode!() |> IO.puts()
      end
    end

    DoStuff.run()
  shell: elixir {0}

核心说明

  • 原写法失效原因:Elixir默认不会自动拉取第三方依赖,也不会自动将第三方包的BEAM文件路径加入代码加载路径,直接import对应模块会触发模块不存在的错误。
  • Mix.install/2会在脚本首次运行时自动完成依赖拉取、编译操作,依赖声明语法和普通Mix项目完全一致,支持Hex官方包、Git源依赖、本地路径依赖。
  • 运行脚本时不需要给elixir命令加-r参数,直接传入脚本文件路径即可。
  • 若要提升CI运行速度,可以给工作流添加缓存配置,缓存~/.mix和脚本运行生成的_build目录,避免每次CI运行重复下载编译依赖。

如果使用1.12以下的老旧Elixir版本,才需要手动执行依赖拉取、将依赖编译产物路径加入ERL代码加载路径,流程繁琐,无特殊需求时直接升级Elixir版本使用Mix.install/2是成本最低的方案。

内容的提问来源于stack exchange,提问作者djfinnoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:21:35