首页 文章

ExDoc:使源链接与私有存储库一起工作

提问于
浏览
0

我正在尝试为我的项目生成文档 .

我已将 {:ex_doc, "~> 0.16", only: :dev, runtime: false} 添加到我的 deps ,将 source_url 设置为我的存储库并运行 mix docs .

我正在使用Github Enterprise,所以我的设置是这样的: source_url: "https://my.private.repo/adam/projname"

但是,在生成的文档中,源的所有链接都直接指向 https://my.private.repo/adam/projname 而不是relvant文件和行号 .

我想做的一个例子:

https://hexdocs.pm/ex_doc/Mix.Tasks.Docs.html

此文件右上角的链接链接到 https://github.com/elixir-lang/ex_doc/blob/v0.18.3/lib/mix/tasks/docs.ex#L1

在我生成的文档中,每个链接都链接到 https://my.private.repo/adam/projname .

我已经尝试将 source_ref 设置为 master ,但这没有任何区别 .

如何让 ExDoc 生成到源代码的正确特定链接?

这是我的 mix.exs 文件的简化版本:

defmodule ProjectName.MixProject do
  use Mix.Project

  def project do
    [
      app: :project_name,
      version: "0.1.0",
      elixir: "~> 1.6",
      deps: deps(),

      # Docs
      name: "ProjectName",
      source_url: "https://my.private.repo/adam/projname"
    ]
  end
end

1 回答

  • 0

    ex_doc 只会在您使用以下某个域为 source_url 时自动确定在何处找到该文件 . ex_docs source

    • github.com

    • bitbucket.com

    • gitlab.com

    在域不同的情况下,您必须在 mix.exs 文件的 docs 部分中提供 source_url_pattern

    def project do
        [
          app: :test_exdoc,
          version: "0.1.0",
          elixir: "~> 1.7-dev",
          start_permanent: Mix.env() == :prod,
          source_url: "https://yourprivate-repo.com/adam/projname",
          deps: deps(),
          docs: [
            source_url_pattern: "https://yourprivate-repo.com/adam/projname/blob/master/%{path}#L%{line}"
          ]
        ]
      end
    

相关问题