JSPM

textlint

4.5.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 76402
  • Score
    100M100P100Q152551F
  • License MIT

plugable text lint tool(support markdown).

Package Exports

  • textlint
  • textlint/lib/config/config
  • textlint/lib/textlint-core

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (textlint) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

textlint Build Status

The pluggable linting tool for text(plain text and markdown).

It is similar to ESLint.

Installation

$ npm install textlint -g

Usage

textlint has not default rule!!

Should use textlint with --rule or --ruledir.

todo:lint result

  • more more document

ℹ️ See examples/cli

# install textlint rule
npm install --save-dev textlint-rule-no-todo
# use with `textlint-rule-no-todo` rule
# shorten `textlint-rule-no-todo` to `no-todo`.
textlint --rule no-todo README.md

CLI

See command help.

$ textlint -h
  textlint [options] file.md [file.txt] [dir]
  
  Options:
    -h, --help                 Show help.
    -c, --config path::String  Use configuration from this file or sharable config.
    --rule [path::String]      Set rule package name and set all default rules to off.
    --rulesdir [path::String]  Set rules from this directory and set all default rules to off.
    -f, --format String        Use a specific output format. - default: stylish
    -v, --version              Outputs the version number.
    --ext [String]             Specify text file extensions.
    --no-color                 Enable color in piped output.
    -o, --output-file path::String  Enable report to be written to a file.
    --quiet                    Report errors only. - default: false
    --stdin                    Lint code provided on <STDIN>. - default: false

Allow to use with multiple rules.

$ textlint --rule no-todo --rule very-nice-rule README.md

.textlintrc

.textlintrc is config file that is loaded as YAML, JSON or JS via MoOx/rc-loader.

$ textlint --rule no-todo --rule very-nice-rule README.md

is equal to

{
  "rules": {
    "no-todo": true,
    "very-nice-rule": true,
  }
}

The config object can define rule's option.

{
  "rules": {
    "no-todo": false, // disable
    "very-nice-rule": {
        "key": "value"
    }
  }
}

Pass rule's options("key": "value") to very-nice-rule.

It mean that use the following format:

{
  "rules": {
    "<rule-name>": true | false | object
  }
}

ℹ️ for more details

Plugin

textlint plugin is a set of rules and rulesConfig or customize parser.

To enable plugin, put the "plugin-nameinto.textlinrc`.

// `.textlinrc`
{
    "plugins": [
        "plugin-name"
    ],
    // overwrite-plugins rules config
    // <plugin>/<rule>
    "rules": {
        "plugin-name/rule-name" : false
    }
}

ℹ️ See docs/plugin.md

Rule list - Collection of textlint rule

See Collection of textlint rule · textlint/textlint Wiki.

If you create new rule, and add it to the wiki :)

Built-in formatters

Currently, you can use "stylish" (defaults), "compact", "checkstyle", "jslint-xml", "junit", "tap", "pretty-error", "json".

e.g.) use pretty-error.js

$ textlint -f pretty-error file.md

More detail in textlint/textlint-formatter.

Use as node modules

You can use textlint as node modules.

$ npm install textlint --save-dev

Minimal usage:

var TextLintEngine = require("textlint").TextLintEngine;
var engine = new TextLintEngine({
    rulePaths: ["path/to/rule-dir"]
});
var results = engine.executeOnFiles(["README.md"]);
console.log(results[0].filePath);// => "README.md"
// messages are `TextLintMessage` array.
console.log(results[0].messages);
/* 
[
    {
        id: "rule-name",
        message:"lint message",
        line: 1, // 1-based columns(TextLintMessage)
        column:1 // 1-based columns(TextLintMessage)
    }
]
 */
if (engine.isErrorResults(results)) {
    var output = engine.formatResults(results);
    console.log(output);
}

High level usage:

var textlint = require("textlint").textlint;
textlint.setupRules({
    // rule-key : rule function(see docs/create-rules.md)
    "rule-key": function(context){
        var exports = {};
        exports[context.Syntax.Str] = function (node) {
            context.report(node, new context.RuleError("error message"));
        };
        return exports;
    }
});
var results = cliEngine.executeOnFiles(["README.md"]);
console.log(results[0].filePath);// => "README.md"
console.log(results[0].messages);// => [{message:"lint message"}]

More detail:

FAQ: How to create rules?

Please see docs/

Use with XXX

gulp plugin for textlint.

The plugin for Atom Linter provides an interface to textlint.

Who's using textlint?

The vuejs.org for japanese.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

License

MIT and

lib/load-rules.js, util/traverse.js, cli.js are:

ESLint
Copyright (c) 2013 Nicholas C. Zakas. All rights reserved.
https://github.com/eslint/eslint/blob/master/LICENSE

SCG: TextLint is similar project.

SCG: TextLint's place is equal to my textlint(Fortuitously, project's name is the same too!).

concept

via Natural Language Checking with Program Checking Tools

Acknowledgements

Thanks to ESLint.