Lychee:一个快速、异步、基于流的链接检查工具

  • 享乐分享享乐分享[私信Ta]
  • 25天前
  • 86
  • 阅读8分钟
  • 软件介绍

    Lychee 是一个用 Rust 语言开发的链接检查工具。它可以帮助你找出网站、文档和代码中所有失效的链接,包括网址和邮箱地址。无论你是在维护一个网站、编写 Markdown 文档,还是管理一个大型项目,Lychee 都能快速扫描并告诉你哪些链接已经失效。

    这个项目在 Github 上获得了 3.4k 个星标,有 194 个分支版本,超过 105 位开发者为其贡献代码。最新版本是 v0.23.0,发布于 2026 年 2 月。Lychee 提供了多种使用方式:你可以在命令行直接使用它,也可以把它集成到自己的程序里,或者在 GitHub 的自动化流程中使用。这个项目采用 Apache 2.0 和 MIT 两种开源许可证,你可以根据需要选择。

    功能介绍

    基础功能

    Lychee 的核心功能是检查链接是否有效。它能够检测网站和文件中的所有超链接,验证这些链接是否还能正常访问。除了网址,Lychee 还能检查文本中的邮箱地址是否有效。

    这个工具支持多种文件格式,包括 Markdown 文件、HTML 网页、纯文本文件,甚至整个网站。它使用异步处理技术,这意味着它能同时检查很多链接,速度非常快。如果你要反复检查相同的内容,Lychee 还能把检查结果缓存起来,下次检查时就能更快完成。

    高级功能

    Lychee 提供了很多高级功能来满足复杂的需求。你可以用正则表达式来排除某些链接,不检查它们。如果你有一个 .lycheeignore 文件,可以在里面列出所有不想检查的链接规则。同样地,你也可以排除某些文件夹或文件,让 Lychee 跳过它们。

    如果你经常检查 GitHub 上的链接,可以设置一个 GitHub Token,这样就不会因为请求太频繁而被限制。Lychee 还支持自定义 HTTP 请求头,比如修改用户代理,这对某些网站很有用。它能处理网页的重定向,支持基本认证,还能设置请求的超时时间。

    对于相对路径和锚点链接,Lychee 也能正确处理。它可以输出 JSON 格式的结果,方便你用其他工具进行进一步处理。Lychee 还能对特定的服务器进行限流,避免对目标网站造成压力,同时自动尊重服务器返回的速率限制。最后,它还能输出 JUnit 格式的测试报告,并在结果中显示链接所在的行号和列号。

    使用方法/界面展示

    Lychee:一个快速、异步、基于流的链接检查工具

    安装方式

    最简单的安装方式是使用 Cargo,这是 Rust 的包管理工具。如果你已经安装了 Rust,只需要运行一条命令就能安装 Lychee:

    cargo install lychee

    如果你不想安装 Rust,也可以从 GitHub 的发布页面下载已经编译好的二进制文件,支持 Linux、macOS 和 Windows。另外,你还可以使用 Docker 来运行 Lychee,这样就不需要在本地安装任何东西。如果你使用 Nix 包管理器,项目也提供了相应的支持。

    基本使用

    安装完成后,最简单的用法就是检查当前目录下的所有链接:

    lychee .

    如果你只想检查某个特定的文件,可以这样做:

    lychee README.md test.html info.txt

    如果你想检查一个网站上的所有链接,直接输入网址就行:

    lychee https://example.com

    有时候你不想检查某些链接。比如说,你的文档中有一些示例链接,不是真实的网址。这时候你可以用正则表达式来排除它们:

    lychee . --exclude "example\.(com|org)"

    如果有整个文件夹你想跳过,比如 node_modules 或 target 文件夹,可以这样:

    lychee . --exclude-path ./node_modules --exclude-path ./target

    第一次检查可能会比较慢,但如果你启用缓存,下次检查相同的内容就会快得多:

    lychee . --cache

    有些网站响应比较慢,默认的超时时间可能不够。你可以自己设置超时时间,单位是秒:

    lychee . --timeout 30

    如果你经常检查 GitHub 上的链接,可以设置你的 GitHub Token 来避免被限制:

    lychee . --github-token your_token_here

    如果你想要 JSON 格式的输出结果,方便用程序处理:

    lychee . --output json

    如果你不想看到进度条的输出:

    lychee . --no-progress

    配置文件

    对于复杂的配置,你可以创建一个 lychee.toml 文件,把所有设置都写在里面。这样就不用每次都在命令行输入很多参数了:

    [cache]
    cache_file = ".lycheecache"
    
    [timeout]
    timeout = 30
    
    [github]
    github_token = "your_token_here"
    
    [exclude]
    exclude = ["example\\.com", "test\\.org"]

    常用命令参数

    除了上面提到的参数,Lychee 还有很多其他选项。输入 lychee --help 可以看到所有可用的参数。这里列出一些常用的:--version 显示版本号,--exclude 用正则表达式排除链接,--exclude-path 排除文件或文件夹,--cache 启用缓存,--timeout 设置超时时间,--github-token 设置 GitHub Token,--user-agent 自定义用户代理,--no-progress 隐藏进度条,--output 指定输出格式,--header 添加自定义 HTTP 请求头,--basic-auth 设置基本认证。

    理解返回码

    Lychee 运行完成后会返回一个数字,告诉你检查的结果。返回 0 表示成功,所有链接都检查完了。返回 1 表示出现了错误,比如输入有问题或配置文件有错误。返回 2 表示找到了失效的链接。返回 3 表示配置文件本身有问题。

    额外补充

    和其他工具的配合

    如果你使用 GitHub,Lychee 提供了一个官方的 GitHub Action,可以在你的自动化流程中使用。每次你推送代码时,它都能自动检查链接。在你的工作流文件中加入这样的配置就行:

    - name: Link Checker
      uses: lycheeverse/lychee-action@v1
      with:
        args: --no-progress .

    如果你使用 pre-commit 工具来在提交前检查代码,也可以把 Lychee 集成进去。在 .pre-commit-config.yaml 文件中添加:

    repos:
      - repo: https://github.com/lycheeverse/lychee.git
        rev: v0.23.0
        hooks:
          - id: lychee
            args: ["--no-progress", "--exclude", "file://"]

    如果你是开发者,想在自己的 Rust 项目中使用 Lychee,可以把它作为一个库来使用。项目提供了详细的文档和示例代码,你可以在 examples 文件夹里找到很多实用的例子。

    推荐文章

    发表评论

    发表
    Lychee:一个快速、异步、基于流的链接检查工具
  • 评分:
  • 类型:辅助查询
  • 专题:Github
  • 项目介绍:
  • lycheeverse lychee
  • 3.46K 201
  • 创建:5年前 更新:10小时前
  • ⚡ Fast, async, stream-based link checker written in Rust. Finds broken URLs and mail addresses inside Markdown, HTML, reStructuredText, websites and more! - lycheeverse/lychee
  • *数据缓存于:7小时前
  • 大家在看

  • 站点
  • 软件
  • 技巧
  • 上升前十

  • 站点
  • 软件
  • 技巧
  • 订阅我们

    输入你的电子邮件地址订阅网站,我们会在有必要时通过邮件联系您
    订阅
    *订阅成功后会收到订阅通知
    微信公众号:xiangleshare
    三天内不显示