Skip to main content

Command Line Interface

The textlint Command Line Interface (CLI) is a tool for linting text from terminal.

Run the CLI

textlint requires Node.js for running. Follow the instruction in the Getting Started with textlint to run the CLI.

Most users use npx to run textlint command from terminal.

$ npx textlint README.md

textlint support glob pattern and directory as path.

# Should wrap the glob pattern with double quotes
$ npx textlint "docs/**/*.md"
# Run for directory
$ npx textlint docs/

Options

You can view all the CLI options by running textlint --help.

$ textlint [options] file.md [file|dir|glob*]

Options:
-h, --help Show help.
-c, --config path::String Use configuration from this file or sharable config.
--ignore-path path::String Specify path to a file containing patterns that describes files to ignore. - default: .textlintignore
--init Create the config file if not existed. - default: false
--fix Automatically fix problems
--dry-run Enable dry-run mode for --fix. Only show result, don't change the file.
--debug Outputs debugging information
--print-config Print the config object to stdout
-v, --version Outputs the version number.

Using stdin:
--stdin Lint text provided on <STDIN>. - default: false
--stdin-filename String Specify filename to process STDIN as

Output:
-o, --output-file path::String Enable report to be written to a file.
-f, --format String Use a specific output format.

Available formatter : checkstyle, compact, jslint-xml, json, junit, pretty-error, stylish, table, tap, unix

Available formatter for --fix: compats, diff, fixed-result, json, stylish - default: stylish
--no-color Disable color in piped output.
--quiet Report errors only. - default: false

Specifying rules and plugins:
--no-textlintrc Disable .textlintrc
--plugin [String] Set plugin package name
--rule [String] Set rule package name
--preset [String] Set preset package name and load rules from preset package.
--rulesdir [path::String] Use additional rules from this directory

Caching:
--cache Only check changed files - default: false
--cache-location path::String Path to the cache file or directory - default: .textlintcache

Experimental:
--experimental Enable experimental flag.Some feature use on experimental.
--rules-base-directory path::String Set module base directory. textlint load modules(rules/presets/plugins) from the base directory.

Pipe to textlint

textlint supports stdin from other commands via pipe.

$ cat README.md | npx textlint --stdin --stdin-filename "README.md"

You can get --fix result via --format=fixed-result formatter.

$ cat README.md | npx textlint --stdin --stdin-filename README.md --fix --format fixed-result --output-file NEW.md

Note:

  • --stdin-filename is required when using --stdin for recognizing the file type.
  • Almost formatter output lint message, but fixed-result formatter output --fix result text.

Cache

textlint supports caching for performance. The cache is disabled by default. You can enable it with the --cache option.

$ textlint --cache README.md

If you want to clear the cache, you can use the --no-cache option or just remove --cache option.

Exit Code

📝 This status is defined in textlint v13.0.0 or later.

0: No Error

  • Not found lint error
  • --fix: found errors but fix all errors, so exit with 0
  • --output-file: Found lint error but --output-file is specified
  • --dry-run: Found lint error but --dry-run is specified

1: Lint Error

  • found lint error
  • --fix: found errors and could not fix all errors, so exit with 1

2: Fatal Error

  • Crash textlint process
  • Fail to load config/rule/plugin etc...