Skip to content

@azu azu released this Oct 20, 2019 · 8 commits to master since this release

3.0.0

Major release of textlint-scripts!

Also, update create-textlint-rule@1.4.0.

You can create TypeScript project for textlint rule:

$ npx create-textlint-rule example --typescript

Summary

  • Support Async Function #23
  • Inline static resources in building for Browser #31
  • Support TypeScript #27

Breaking Changes 🔥

textlint-script build output compatible code for ES2015+.
It means that output code is not work on IE11.

Support Async Function ⭐️

Async/Await is supported by default.

Inline static resources by default ⭐️

For Web Browser support, textlint-script build inline static file by default.

textlint-script build inline Node fs calls with babel-plugin-static-fs for browser compatibility.

const fs = require("fs");
const path = require("path");
const text = fs.readFileSync(path.join(__dirname, "readme.md"), "utf-8");

will be

const text = "README CONTENT"

Web Browser does not support Node.js's fs module, this inlining feature aim to improve compatibility between Node.js and Web Browser.

ℹ️ @textlint/browser-run help you to test your textlint rule work on browser.

📝 You want to disable this behavior, set NO_INLINE env like NO_INLINE=1 textlint-scripts build.

Support TypeScript 🌟

textlint-script build and textlint-script test support TypeScript.
You can write textlint rule with TypeScript.

ℹ️ textlint-script detect the project is TypeScript by tsconfig.json.

Start Guide

You just pass --typescript flag to create-textlint-rule.

$ npx create-textlint-rule example --typescript

Migration Guide

If you want to write textlint rule with TypeScript, you can migrate it by following steps:

  1. Install TypeScript env
npm install textlint-scripts@beta --save-dev
npm install --save-dev typescript ts-node @textlint/types @types/node
npx tsc --init # create tsconfig.json
  1. Rename .js to .ts
  2. Fix TypeScript Error

@textlint/types provide types for textlint rule.

import { TextlintRuleModule, TextlintRuleReporter } from "@textlint/types";
export interface RuleOptions {
  foo: boolean;
}
const report: TextlintRuleReporter<RuleOptions> = function(context, options = {}) {
    const { Syntax, RuleError, report, getSource } = context;
    return {
        [Syntax.Str](node) {
            // ...
        }
    };
};
export default {
    linter: report,
    fixer: report
} as TextlintRuleModule;
  1. npm test and npm run build.

Migration Scrips: @textlint/migrate-textlint-scripts-typescript

We also prepare migration script from textlint-script with JavaScript to textlint-script with TypeScript.

Migration script help you to do step 1.

# in you textlint rule project
npx @textlint/migrate-textlint-scripts-typescript

For more details, see @textlint/migrate-textlint-scripts-typescript.

Examples:

Following examples are migrated to TypeScript from JavaScript.

Assets 2
You can’t perform that action at this time.