Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aminland/eslint-plugin-coffee
Eslint plugin for Coffeescript. Full coffee integration (including CJSX format) into eslint, with optional additional rules from (modified) coffeelint
https://github.com/aminland/eslint-plugin-coffee
coffee coffeelint coffeescript eslint eslint-plugin eslint-plugin-coffee eslint-plugin-import
Last synced: 3 months ago
JSON representation
Eslint plugin for Coffeescript. Full coffee integration (including CJSX format) into eslint, with optional additional rules from (modified) coffeelint
- Host: GitHub
- URL: https://github.com/aminland/eslint-plugin-coffee
- Owner: aminland
- License: mit
- Archived: true
- Created: 2018-02-14T03:50:21.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-05-06T21:54:29.000Z (over 3 years ago)
- Last Synced: 2024-07-02T06:18:54.164Z (4 months ago)
- Topics: coffee, coffeelint, coffeescript, eslint, eslint-plugin, eslint-plugin-coffee, eslint-plugin-import
- Language: CoffeeScript
- Homepage: https://www.npmjs.com/package/@fellow/eslint-plugin-coffee
- Size: 239 KB
- Stars: 11
- Watchers: 2
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-eslint - Coffee - Enables linting CoffeeScript files with, with optional linting rules from the Coffeelint library. (Plugins / Languages and Environments)
README
# @fellow/eslint-plugin-coffee
Transpiles coffee files first with coffeescript, then runs eslint checks on them. Line / Column reporting is processed through sourcemap data, so they will be accurate for your coffee files.
The plugin ignores some rules that are impossible to satisfy from coffeescript (see [this file](src/processors.coffee#L8))
It additionally runs rules from [coffeelint2](https://www.npmjs.com/package/@fellow/coffeelint2) by creating a fake rule in eslint which wraps and maps the coffeelint2 rules.
**Special thanks** to [Alexander Mextner](https://github.com/a-x-) for getting this started and providing the base code.
## Installation
You'll first need to install [ESLint](http://eslint.org):
```
$ npm i eslint --save-dev
```Next, install `@fellow/eslint-plugin-coffee`:
```
$ npm install @fellow/eslint-plugin-coffee --save-dev
```**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `@fellow/eslint-plugin-coffee` globally.
## Easy Usage
Edit your `.eslintrc` file. and add this plugin. The easiest configuration is to just extend the base config provided to get a good set of rules ([see here](src/configs/recommended.coffee)). You can omit the `eslint-plugin-` prefix when configuring eslint.**Note:** If you prefer the use of tabs, make sure to extend
@fellow/coffee/**recommended-tabs**
instead.```yaml
{
"extends": ["plugin:@fellow/coffee/recommended"],
"plugins": [
"@fellow/coffee",
# ...
]
}
```## Manual Configuration
For ESLint rules only, add `@fellow/coffee` to the plugins section of your `.eslintrc` configuration file. This will cover many things well if use a good set of base rules. As always, you can omit the `eslint-plugin-` prefix:```yaml
{
"plugins": [
"@fellow/coffee",
# ...
]
}
```For better compatibility with other plugins (e.g. `eslint-plugins-imports`), I also provide a "parser" which eslint can hook into. Plugins like the `import` plugin do not run through checks or otherwise require module, you must set this plugin to wrap your default parser:
```yaml
{
"parser": "@fellow/eslint-plugin-coffee",
"parserOptions": {
"parser": "babel-eslint", # original parser goes here (you must specify one to use this option).
"sourceType": "module", # any original parser config options you had.
"ecmaVersion": 6
},
"plugins": [
"@fellow/eslint-plugin-coffee",
# ...
],
"rules": {
"@fellow/coffee/coffeescript-error": ["error", {}],
# ...
}}
```To see how to add your own coffeelint-style rules, switch your `.eslintrc` -> `.eslintrc.js` and add:
`require('@fellow/eslint-plugin-coffee').registerCoffeeLintRule('myRuleModule')` at the top.Then include it in the `rules` section of your `.eslintrc.js`, passing any config options your rule might expect.
To learn how to write rules for coffeelint, check their docs.
## Editor compatibility
### Atom
For linting to work in Atom, install the `linter-eslint` package and add `source.cjsx`, `source.coffee` and `source.litcoffee` grammar scopes to your config:
``` coffee
"*":
# ...
"linter-eslint":
scopes: [
"source.js"
"source.jsx"
"source.js.jsx"
"source.flow"
"source.babel"
"source.js-semantic"
"source.cjsx"
"source.coffee"
"source.litcoffee"
]
```### VSCode
For linting to work in VS Code, install the `eslint` extension and add the following to your workspace settings:
``` js
"settings": {
// ...
"files.associations": {
"*.cjsx": "coffeescript"
},
"eslint.validate": [
"javascript",
"javascriptreact",
"coffeescript"
],
},
```