1 | [![NPM version](https://badge.fury.io/js/tslint.svg)](http://badge.fury.io/js/tslint)
|
2 | [![Downloads](http://img.shields.io/npm/dm/tslint.svg)](https://npmjs.org/package/tslint)
|
3 | [![Dependency Status](https://david-dm.org/palantir/tslint.svg)](https://david-dm.org/palantir/tslint)
|
4 | [![devDependency Status](https://david-dm.org/palantir/tslint/dev-status.svg)](https://david-dm.org/palantir/tslint/?type=dev)
|
5 | [![peerDependency Status](https://david-dm.org/palantir/tslint/peer-status.svg)](https://david-dm.org/palantir/tslint/?type=peer)
|
6 | [![Circle CI](https://circleci.com/gh/palantir/tslint.svg?style=svg)](https://circleci.com/gh/palantir/tslint)
|
7 |
|
8 | # TSLint
|
9 |
|
10 | TSLint is an extensible static analysis tool that checks [TypeScript](https://github.com/Microsoft/TypeScript) code for readability, maintainability, and functionality errors. It is widely supported across modern editors & build systems and can be customized with your own lint rules, configurations, and formatters.
|
11 |
|
12 | TSLint supports:
|
13 |
|
14 | - an extensive set of core rules
|
15 | - custom lint rules
|
16 | - custom formatters (failure reporters)
|
17 | - inline disabling and enabling of rules with comment flags in source code
|
18 | - configuration presets (`tslint:latest`, `tslint-react`, etc.) and plugin composition
|
19 | - automatic fixing of formatting & style violations
|
20 | - integration with [MSBuild](https://github.com/joshuakgoldberg/tslint.msbuild), [Grunt](https://github.com/palantir/grunt-tslint), [Gulp](https://github.com/panuhorsmalahti/gulp-tslint), [Atom](https://github.com/AtomLinter/linter-tslint), [Eclipse](https://github.com/palantir/eclipse-tslint), [Emacs](http://flycheck.org), [Sublime](https://packagecontrol.io/packages/SublimeLinter-contrib-tslint), [Vim](https://github.com/scrooloose/syntastic), [Visual Studio 2015](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.WebAnalyzer), [Visual Studio 2017](https://marketplace.visualstudio.com/items?itemName=RichNewman.TypeScriptAnalyzer), [Visual Studio code](https://marketplace.visualstudio.com/items?itemName=eg2.tslint), [WebStorm](https://www.jetbrains.com/webstorm/help/tslint.html) and [more](https://palantir.github.io/tslint/usage/third-party-tools/)
|
21 |
|
22 | ## Installation & Usage
|
23 |
|
24 | Please refer to the full installation & usage documentation on the [TSLint website](https://palantir.github.io/tslint/). There, you'll find information about
|
25 |
|
26 | - [configuration](https://palantir.github.io/tslint/usage/configuration/),
|
27 | - [core rules](https://palantir.github.io/tslint/rules/),
|
28 | - [core formatters](https://palantir.github.io/tslint/formatters/), and
|
29 | - [customization of TSLint](https://palantir.github.io/tslint/develop/custom-rules/).
|
30 | - [inline disabling and enabling of rules with comment flags](https://palantir.github.io/tslint/usage/rule-flags/)
|
31 |
|
32 | ## Custom Rules & Plugins
|
33 |
|
34 | #### Custom rule sets from Palantir
|
35 |
|
36 | - [tslint-react](https://github.com/palantir/tslint-react) - Lint rules related to React & JSX.
|
37 | - [tslint-blueprint](https://github.com/palantir/tslint-blueprint) - Lint rules to enforce best practices with [blueprintjs libraries](https://github.com/palantir/blueprint)
|
38 |
|
39 | #### Custom rule sets from the community
|
40 |
|
41 | If we don't have all the rules you're looking for, you can either write your own [custom rules](https://palantir.github.io/tslint/develop/custom-rules/) or use rules implementations developed by the community. The repos below are a good source of custom rules:
|
42 |
|
43 | - [ESLint rules for TSLint](https://github.com/buzinas/tslint-eslint-rules) - Improve your TSLint with the missing ESLint Rules
|
44 | - [tslint-microsoft-contrib](https://github.com/Microsoft/tslint-microsoft-contrib) - A set of TSLint rules used on some Microsoft projects
|
45 | - [codelyzer](https://github.com/mgechev/codelyzer) - A set of tslint rules for static code analysis of Angular TypeScript projects
|
46 | - [vrsource-tslint-rules](https://github.com/vrsource/vrsource-tslint-rules)
|
47 | - [tslint-immutable](https://github.com/jonaskello/tslint-immutable) - TSLint rules to disable mutation in TypeScript
|
48 | - [tslint-consistent-codestyle](https://github.com/ajafff/tslint-consistent-codestyle) - TSLint rules to enforce consistent code style in TypeScript
|
49 | - [tslint-sonarts](https://github.com/SonarSource/SonarTS) - Bug-finding rules based on advanced code models to spot hard to find errors in TypeScript
|
50 | - [tslint-clean-code](https://github.com/Glavin001/tslint-clean-code) - A set of TSLint rules inspired by the Clean Code handbook
|
51 | - [rxjs-tslint-rules](https://github.com/cartant/rxjs-tslint-rules) - TSLint rules for RxJS
|
52 |
|
53 | ## Development
|
54 |
|
55 | Prerequisites:
|
56 |
|
57 | - `node` v7+
|
58 | - `yarn` v1.0+
|
59 |
|
60 | #### Quick Start
|
61 |
|
62 | ```bash
|
63 | git clone git@github.com:palantir/tslint.git --config core.autocrlf=input --config core.eol=lf
|
64 | yarn
|
65 | yarn compile
|
66 | yarn test
|
67 | ```
|
68 |
|
69 | ## Creating a new release
|
70 |
|
71 | 1. Bump the version number in `package.json` and `src/linter.ts`
|
72 | 2. Add release notes in `CHANGELOG.md`
|
73 | - Use `./scripts/generate-changelog.js` (after building it with `tsc -p scripts`) to generate the changelog diff. This script expects a [Github.com personal access token](https://github.com/settings/tokens) to exist at `~/github_token.txt` with "repo" permissions.
|
74 | 3. Commit with message `Prepare release <version>`
|
75 | 4. Push your branch to GitHub and make a PR
|
76 | 5. Once your PR is merged, wait for the tests to pass on CircleCI for develop
|
77 | 6. Create a "Release" on GitHub with the proper tag version and notes from the changelog.
|
78 | - The tag should be identical to the version in `package.json`
|
79 | 7. Run `yarn run publish:local`
|