TypeScript Style Guide, with linter and automatic code fixer based on StandardJS
npm install ts-standard
ts-standard
Enable auto code fixing
ts-standard --fix
Note: A tsconfig.json
or similar project file is required. See
TSConfig
section below for more details
ts-standard - Standard for Typescript! (https://github.com/standard/ts-standard)
Usage:
ts-standard <flags> [FILES...]
If FILES is omitted, all JavaScript/Typescript source files (*.js, *.jsx, *.mjs, *.cjs, *.ts)
in the current working directory are checked, recursively.
Certain paths (node_modules/, coverage/, vendor/, *.min.js, bundle.js, and
files/folders that begin with '.' like .git/) are automatically ignored.
Paths in a project's root .gitignore file are also automatically ignored.
Flags:
--fix Automatically fix problems
-p, --project Specify ts-config location (default: ./tsconfig.eslint.json or ./tsconfig.json)
--version Show current version
-h, --help Show usage information
Flags (advanced):
--stdin Read file text from stdin
--globals Declare global variable
--plugins Use custom eslint plugin
--envs Use custom eslint environment
--parser Use custom ts/js parser (default: @typescript-eslint/parser)
--report Use a built-in eslint reporter or custom eslint reporter (default: standard)
--ext, --extensions List of files extensions to lint by default (default: js,jsx,ts,tsx,mjs,cjs)
By default ts-standard
will search the current working director (cwd) for the following in order
tsconfig.eslint.json
tsconfig.json
You can also manually configure the location of the tsconfig
file by either passing the path to
the --project
flag or adding a ts-standard
configuration property to your package.json
file.
{
"ts-standard": {
"project": "path/to/tsconfig.json"
}
}
You can ignore files and folders by either providing specific files/globs of the files you want linted
to ts-standard
when running the command or you can add an ignore
property to your package.json
ts-standard
configuration settings.
{
"ts-standard": {
"ignore": [
"dist",
"src/**/*.js"
]
}
}
{
"ts-standard": {
"ignore": [""], // files/folders/globs to ignore
"noDefaultIgnore": false, // disable ignoring default locations (e.g. node_modules, .git, etc...)
"globals": [""], // global variables to define (e.g. $, jquery, etc...)
"plugins": [""], // Extra eslint plugins to use
"envs": [""], // eslint environments to use (e.g. node, browser, etc...)
"parser": "", // a different eslint parser to use (e.g. babel, etc...)
"cwd": "", // the root working directory where the project file is located
"eslint": "", // path to a custom eslint linter
"files": [""], // files/folders/globs to include in the linting
"project": "", // relative path to `tsconfig.json` file
"fix": false, // auto fix any lint errors found that are fixable
"report": "", // an eslint formatter to output the lint results as (e.g. standard, stylish, json, etc...)
"extensions": "", // a list of file extensions to lint by default (e.g. js,jsx,ts,tsx,mjs,cjs)
}
}
This project has no control over the rules implemented, as such this project cannot change any of the
rules that have been configured. If you want to discuss the rules, please visit the rules configuration repo
eslint-config-standard-with-typescript
.
This utility was designed to be the standard
equivalent for typescript.
Underneath the hood, this utility uses the same standard-engine
and combines that engine with the official
eslint-config-standard-with-typescript
ruleset.
You can also choose to just use eslint
with the
eslint-config-standard-with-typescript
shareable config instead and achieve the same results as
this project. But ts-standard
saves you from having to manually install all the extra dependencies
and may reduce configuration overhead.
Special thanks to standard
for inspiration and some shared code and
to eslint-config-standard-with-typescript
for
creating a typescript specific standard.
I welcome all pull requests. Please make sure you add appropriate test cases for any features added. Before opening a PR please make sure to run the following scripts:
npm run lint
checks for code errors and format according to ts-standardnpm test
make sure all tests passnpm run coverage
make sure the coverage has not decreased from current master