Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/macklinu/danger-plugin-tslint
Danger plugin for TSLint
https://github.com/macklinu/danger-plugin-tslint
code-review danger danger-plugin tslint
Last synced: 3 months ago
JSON representation
Danger plugin for TSLint
- Host: GitHub
- URL: https://github.com/macklinu/danger-plugin-tslint
- Owner: macklinu
- License: mit
- Created: 2017-05-23T22:04:34.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-11-06T18:42:54.000Z (over 5 years ago)
- Last Synced: 2024-10-04T06:22:37.768Z (4 months ago)
- Topics: code-review, danger, danger-plugin, tslint
- Language: TypeScript
- Size: 998 KB
- Stars: 10
- Watchers: 3
- Forks: 3
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-danger - danger-plugin-tslint - Danger plugin for TSLint. (Plugins / TypeScript (danger-js))
README
# danger-plugin-tslint
[![Build Status](https://travis-ci.org/macklinu/danger-plugin-tslint.svg?branch=master)](https://travis-ci.org/macklinu/danger-plugin-tslint)
[![npm version](https://badge.fury.io/js/danger-plugin-tslint.svg)](https://badge.fury.io/js/danger-plugin-tslint)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
[![Greenkeeper badge](https://badges.greenkeeper.io/macklinu/danger-plugin-tslint.svg)](https://greenkeeper.io/)> [Danger](https://github.com/danger/danger-js) plugin for TSLint
## Usage
### Setup TSLint
This Danger plugin requires that you output the TSLint results as a JSON file before running `danger` on CI.
One way to do this is to use TSLint's JSON formatter and [`tee`](https://en.wikipedia.org/wiki/Tee_(command)).
Given a `package.json` with a "lint" script:
```json
{
"scripts": {
"lint": "tslint 'src/**/*.{ts,tsx}'"
}
}
```Running `yarn run lint --silent -- --format json` will only output the JSON results, which are piped into `tee` and written to disk in the `reports/lint-results.json` file.
```sh
# ci-script.shmkdir -p reports/
yarn run lint --silent -- --format json | tee reports/lint-results.jsonyarn run danger
```> In this example, may also want to add the `reports/` directory to your `.gitignore` file, as this file does not need to be checked into source control.
### Setup Danger
Install:
```sh
yarn add danger-plugin-tslint --dev
```At a glance:
```js
// dangerfile.js
import path from 'path'
import tslint from 'danger-plugin-tslint'// Handle TSLint results in `reports/lint-results.json` and leave a Danger comment on the PR
tslint({
lintResultsJsonPath: path.resolve(__dirname, 'reports', 'lint-results.json'),
})
```By default `tslint()` will use the `defaultResultHandler` in [`src/resultHandlers.ts`](https://github.com/macklinu/danger-plugin-tslint/blob/master/src/resultHandlers.ts). If you want to supply a custom result handler, which also requires you to call Danger functions like `fail()` and `message()` , you can do that too:
```js
// dangerfile.js
import path from 'path'
import tslint from 'danger-plugin-tslint'tslint({
lintResultsJsonPath: path.resolve(__dirname, 'reports', 'lint-results.json'),
handleResults: (results) => {
if (results.length > 0) {
const formattedResults = formatResults(results)
fail(`TSLint failed\n\n${formattedResults}`)
} else {
message('👍 TSLint passed')
}
}
})
```Here are examples of what the Danger comment will look like for success or failure:
![success](screenshots/success.png)
![failure](screenshots/failure.png)See the [documentation](http://macklin.underdown.me/danger-plugin-tslint/modules/tslint.html#tslint-1) for detailed information (and also check out [`src/index.ts`](https://github.com/macklinu/danger-plugin-tslint/blob/master/src/index.ts)).
## Changelog
See the GitHub [release history](https://github.com/macklinu/danger-plugin-tslint/releases).
## Development
Install [Yarn](https://yarnpkg.com/en/), and install the dependencies - `yarn install`.
Run the [Jest](https://facebook.github.io/jest/) test suite with `yarn test`.
This project uses [semantic-release](https://github.com/semantic-release/semantic-release) for automated NPM package publishing.
The main caveat: instead of running `git commit`, run `yarn commit` and follow the prompts to input a conventional changelog message via [commitizen](https://github.com/commitizen/cz-cli).
:heart: