lychee
lychee documentation
- Version in MegaLinter: 0.13.0
- Visit Official Web Site
- See How to configure lychee rules
- See Index of problems detected by lychee
Configuration in MegaLinter
- Enable lychee by adding
SPELL_LYCHEE
in ENABLE_LINTERS variable - Disable lychee by adding
SPELL_LYCHEE
in DISABLE_LINTERS variable
Variable | Description | Default value |
---|---|---|
SPELL_LYCHEE_ARGUMENTS | User custom arguments to add in linter CLI call Ex: -s --foo "bar" |
|
SPELL_LYCHEE_FILTER_REGEX_INCLUDE | Custom regex including filter Ex: (src\|lib) |
Include every file |
SPELL_LYCHEE_FILTER_REGEX_EXCLUDE | Custom regex excluding filter Ex: (test\|examples) |
Exclude no file |
SPELL_LYCHEE_CLI_LINT_MODE | Override default CLI lint mode - file : Calls the linter for each file- list_of_files : Call the linter with the list of files as argument- project : Call the linter from the root of the project |
list_of_files |
SPELL_LYCHEE_FILE_EXTENSIONS | Allowed file extensions. "*" matches any extension, "" matches empty extension. Empty list excludes all filesEx: [".py", ""] |
[".md", ".mdx", ".markdown", ".html", ".htm", ".rst", ".txt", ".json", ".jsonc", ".json5", ".yaml", ".yml"] |
SPELL_LYCHEE_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files Ex: ["Dockerfile(-.+)?", "Jenkinsfile"] |
Include every file |
SPELL_LYCHEE_PRE_COMMANDS | List of bash commands to run before the linter | None |
SPELL_LYCHEE_POST_COMMANDS | List of bash commands to run after the linter | None |
SPELL_LYCHEE_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling SPELL_LYCHEE and its pre/post commands | None |
SPELL_LYCHEE_CONFIG_FILE | lychee configuration file nameUse LINTER_DEFAULT to let the linter find it |
lychee.toml |
SPELL_LYCHEE_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules |
SPELL_LYCHEE_DISABLE_ERRORS | Run linter but consider errors as warnings | false |
SPELL_LYCHEE_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | 0 |
SPELL_LYCHEE_CLI_EXECUTABLE | Override CLI executable | ['lychee'] |
MegaLinter Flavours
This linter is available in the following flavours
Flavor | Description | Embedded linters | Info | |
---|---|---|---|---|
![]() |
all | Default MegaLinter Flavor | 117 | |
cupcake | MegaLinter for the most commonly used languages | 85 | ||
documentation | MegaLinter for documentation projects | 51 | ||
dotnet | Optimized for C, C++, C# or VB based projects | 63 | ||
dotnetweb | Optimized for C, C++, C# or VB based projects with JS/TS | 72 | ||
go | Optimized for GO based projects | 53 | ||
java | Optimized for JAVA based projects | 55 | ||
javascript | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 60 | ||
php | Optimized for PHP based projects | 54 | ||
python | Optimized for PYTHON based projects | 62 | ||
ruby | Optimized for RUBY based projects | 51 | ||
rust | Optimized for RUST based projects | 51 | ||
salesforce | Optimized for Salesforce based projects | 54 | ||
swift | Optimized for SWIFT based projects | 51 | ||
terraform | Optimized for TERRAFORM based projects | 55 |
Behind the scenes
How are identified applicable files
- File extensions:
.md
,.mdx
,.markdown
,.html
,.htm
,.rst
,.txt
,.json
,.jsonc
,.json5
,.yaml
,.yml
How the linting is performed
- lychee is called once with the list of files as arguments (
list_of_files
CLI lint mode)
Example calls
lychee --format detailed --no-progress README.md info.txt test.html
lychee --format detailed --no-progress README.md
lychee --format detailed --no-progress test.html info.txt
lychee --format detailed --no-progress --offline path/to/directory
lychee --format detailed --no-progress https://raw.githubusercontent.com/lycheeverse/lychee/master/README.md
lychee --format detailed --no-progress "~/projects/big_project/**/README.*"
lychee --format detailed --no-progress --glob-ignore-case --verbose "~/projects/**/[r]eadme.*"
Help content
A fast, async link checker
Finds broken URLs and mail addresses inside Markdown, HTML, `reStructuredText`, websites and more!
Usage: lychee [OPTIONS] <inputs>...
Arguments:
<inputs>...
The inputs (where to get links to check from). These can be: files (e.g. `README.md`), file globs (e.g. `"~/git/*/README.md"`), remote URLs (e.g. `https://example.com/README.md`) or standard input (`-`). NOTE: Use `--` to separate inputs from options that allow multiple arguments
Options:
-c, --config <CONFIG_FILE>
Configuration file to use
[default: lychee.toml]
-v, --verbose...
Set verbosity level; more output per occurrence (e.g. `-v` or `-vv`)
-q, --quiet...
Less output per occurrence (e.g. `-q` or `-qq`)
-n, --no-progress
Do not show progress bar.
This is recommended for non-interactive shells (e.g. for continuous integration)
--cache
Use request cache stored on disk at `.lycheecache`
--max-cache-age <MAX_CACHE_AGE>
Discard all cached requests older than this duration
[default: 1d]
--dump
Don't perform any link checking. Instead, dump all the links extracted from inputs that would be checked
--archive <ARCHIVE>
Specify the use of a specific web archive. Can be used in combination with `--suggest`
[possible values: wayback]
--suggest
Suggest link replacements for broken links, using a web archive. The web archive can be specified with `--archive`
-m, --max-redirects <MAX_REDIRECTS>
Maximum number of allowed redirects
[default: 5]
--max-retries <MAX_RETRIES>
Maximum number of retries per request
[default: 3]
--max-concurrency <MAX_CONCURRENCY>
Maximum number of concurrent network requests
[default: 128]
-T, --threads <THREADS>
Number of threads to utilize. Defaults to number of cores available to the system
-u, --user-agent <USER_AGENT>
User agent
[default: lychee/0.13.0]
-i, --insecure
Proceed for server connections considered insecure (invalid TLS)
-s, --scheme <SCHEME>
Only test links with the given schemes (e.g. http and https)
--offline
Only check local files and block network requests
--include <INCLUDE>
URLs to check (supports regex). Has preference over all excludes
--exclude <EXCLUDE>
Exclude URLs and mail addresses from checking (supports regex)
--exclude-file <EXCLUDE_FILE>
Deprecated; use `--exclude-path` instead
--exclude-path <EXCLUDE_PATH>
Exclude file path from getting checked
-E, --exclude-all-private
Exclude all private IPs from checking.
Equivalent to `--exclude-private --exclude-link-local --exclude-loopback`
--exclude-private
Exclude private IP address ranges from checking
--exclude-link-local
Exclude link-local IP address range from checking
--exclude-loopback
Exclude loopback IP address range and localhost from checking
--exclude-mail
Exclude all mail addresses from checking
--remap <REMAP>
Remap URI matching pattern to different URI
--header <HEADER>
Custom request header
-a, --accept <ACCEPT>
Comma-separated list of accepted status codes for valid links
-t, --timeout <TIMEOUT>
Website timeout in seconds from connect to response finished
[default: 20]
-r, --retry-wait-time <RETRY_WAIT_TIME>
Minimum wait time in seconds between retries of failed requests
[default: 1]
-X, --method <METHOD>
Request method
[default: get]
-b, --base <BASE>
Base URL or website root directory to check relative URLs e.g. https://example.com or `/path/to/public`
--basic-auth <BASIC_AUTH>
Basic authentication support. E.g. `username:password`
--github-token <GITHUB_TOKEN>
GitHub API token to use when checking github.com links, to avoid rate limiting
[env: GITHUB_TOKEN]
--skip-missing
Skip missing input files (default is to error if they don't exist)
--include-verbatim
Find links in verbatim sections like `pre`- and `code` blocks
--glob-ignore-case
Ignore case when expanding filesystem path glob inputs
-o, --output <OUTPUT>
Output file of status report
-f, --format <FORMAT>
Output format of final status report (compact, detailed, json, markdown)
[default: compact]
--require-https
When HTTPS is available, treat HTTP links as errors
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
Installation on mega-linter Docker image
- Dockerfile commands :
FROM lycheeverse/lychee:latest-alpine as lychee
COPY --link --from=lychee /usr/local/bin/lychee /usr/bin/