Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@coffeelint/cli

coffeelint49.9kMIT5.2.11

Lint your CoffeeScript

lint, coffeescript, coffee-script

readme

CoffeeLint

CoffeeLint is a style checker that helps keep CoffeeScript code clean and consistent.

For guides on installing, using and configuring CoffeeLint, head over here.

To suggest a feature, report a bug, or general discussion, head over here.

Team

Current:

Past:

Contributing

  • New rules should be set to a warn level. Developers will expect new changes to NOT break their existing workflow, so unless your change is extremely usefull, default to warn. Expect discussion if you choose to use error.

  • Look at existing rules and test structures when deciding how to name your rule. no_foo.coffee is used for many tests designed to catch specific errors, whereas foo.coffee is used for tests that are designed to enforce formatting and syntax.

Steps

  1. Fork the repo locally.
  2. Run npm install to get dependencies.
  3. Create your rule in a single file as src/rules/your_rule_here.coffee, using the existing rules as a guide. You may examine the AST and tokens using https://asaayers.github.io/clfiddle/.
  4. Add your test file my_test.coffee to the test directory.
  5. Register your rule in src/coffeelint.coffee.
  6. Run your test using npm run testrule test/your_test_here.coffee.
  7. Run the whole tests suite using npm test.
  8. Submit a pull request.

Github Actions

Updating documentation when adding a new rule

When adding a new rule, its documentation is specified by setting a description property within its rule property:

module.exports = class NoComment

    rule:
        name: 'no_comment'
        level: 'ignore'
        message: 'No comment'
        description: '''
            Disallows any comment in the code
            '''

    tokens: ['#', '###']

    lintToken : (token, tokenApi) ->
        return {context: "Found '#{token[0]}'"}

The description property is a string that can embed HTML code:

description: '''
    Disallows any comment in the code. This code would not pass:
    <pre>
    <code>### Some code with comments
    foo = ->
        # some other comments
        bar()
    </code>
    </pre>
    '''

Coffeelint's website generates each rule's documentation based on this description property.

changelog

5.2.11 (2022-11-07)

Bug Fixes

  • deps: bump yargs from 17.6.0 to 17.6.2 (#222) (f7c7e60)

5.2.10 (2022-09-30)

Bug Fixes

5.2.9 (2022-05-16)

Bug Fixes

  • deps: bump glob from 8.0.1 to 8.0.3 (#209) (b51dafc)
  • deps: bump yargs from 17.4.1 to 17.5.1 (#208) (5fd34f4)

5.2.8 (2022-04-25)

Bug Fixes

  • deps: bump coffeescript from 2.6.1 to 2.7.0 (#206) (9f0316c)

5.2.7 (2022-04-19)

Bug Fixes

5.2.6 (2022-04-11)

Bug Fixes

  • deps: bump yargs from 17.4.0 to 17.4.1 (#204) (ed7815e)

5.2.5 (2022-03-21)

Bug Fixes

  • deps: bump yargs from 17.3.1 to 17.4.0 (#200) (ab15421)

5.2.4 (2022-01-27)

Bug Fixes

  • deps: bump resolve from 1.21.0 to 1.22.0 (#191) (91e4186)

5.2.3 (2022-01-04)

Bug Fixes

  • deps: bump resolve from 1.20.0 to 1.21.0 (#189) (466ac4b)
  • deps: update all deps (c63d425)

5.2.2 (2021-12-20)

Bug Fixes

  • deps: bump ignore from 5.1.9 to 5.2.0 (#187) (c2f8625)

5.2.1 (2021-12-01)

Bug Fixes

  • deps: bump yargs from 17.2.1 to 17.3.0 (#185) (32f2cfd)

5.2.0 (2021-11-07)

Features

5.1.1 (2021-11-05)

Bug Fixes

  • deps: bump ignore from 5.1.8 to 5.1.9 (#176) (fbdb8c9)

5.1.0 (2021-11-01)

Features

  • Allow ".coffeelintrc.json" config file (#173) (970fcd4)

5.0.5 (2021-10-18)

Bug Fixes

  • deps: bump coffeescript from 2.6.0 to 2.6.1 (#166) (66c5e32)

5.0.4 (2021-09-23)

Bug Fixes

  • deps: bump glob from 7.1.7 to 7.2.0 (#162) (e77d072)
  • deps: bump yargs from 17.1.1 to 17.2.0 (#163) (6be6c16)

5.0.3 (2021-09-20)

Bug Fixes

  • deps: bump coffeescript from 2.5.1 to 2.6.0 (#154) (254351c)

5.0.2 (2021-08-16)

Bug Fixes

  • deps: bump yargs from 17.1.0 to 17.1.1 (#146) (d7f9085)

5.0.1 (2021-05-07)

Bug Fixes

5.0.0 (2021-05-04)

Bug Fixes

BREAKING CHANGES

  • drop support for node v10

4.1.5 (2021-05-03)

Bug Fixes

  • deps: bump yargs from 16.2.0 to 17.0.0 (#132) (62369be)

4.1.4 (2021-03-23)

Bug Fixes

4.1.3 (2021-02-12)

Bug Fixes

  • deps: bump resolve from 1.19.0 to 1.20.0 (#118) (90fb2a1)

4.1.2 (2020-11-11)

Bug Fixes

  • deps: bump resolve from 1.18.1 to 1.19.0 (#98) (e602414)

4.1.1 (2020-10-16)

Bug Fixes

  • deps: bump yargs from 16.0.3 to 16.1.0 (#94) (6a21feb)

4.1.0 (2020-09-23)

Features

4.0.0 (2020-09-10)

Bug Fixes

BREAKING CHANGES

  • Drop support for Node v8

3.2.10 (2020-07-15)

Bug Fixes

  • deps: update dependency strip-json-comments to ^3.1.1 (c0e112e)

3.2.9 (2020-07-11)

Bug Fixes

  • deps: update dependency yargs to ^15.4.1 (fe70faf)

3.2.8 (2020-07-03)

Bug Fixes

  • deps: update dependency yargs to ^15.4.0 (d252233)

3.2.7 (2020-06-11)

Bug Fixes

  • deps: update dependency ignore to ^5.1.8 (#68) (dc316a4)
  • Improve max_line_length rule with comment behavior (#67) (aa7930a)
  • deps: update dependency ignore to ^5.1.8 (2a6b1d0)

3.2.6 (2020-05-23)

Bug Fixes

  • deps: update dependency ignore to ^5.1.6 (#63) (a06e76e)

3.2.5 (2020-05-22)

Bug Fixes

  • deps: update dependency ignore to ^5.1.5 (#62) (ac86e49)

3.2.4 (2020-04-23)

Bug Fixes

  • deps: update dependency resolve to ^1.17.0 (#60) (e42b0d1)

3.2.3 (2020-04-17)

Bug Fixes

  • deps: update dependency resolve to ^1.16.1 (#58) (a3c5915)

3.2.2 (2020-04-17)

Bug Fixes

  • deps: update dependency resolve to ^1.16.0 (#56) (f16af4d)

3.2.1 (2020-04-17)

Bug Fixes

  • deps: use semantic-release (9c90153)

3.2.0 (2020-04-10)

Add prefer_fat_arrows_in_methods rule.

  • Fix last line comment trailing semicolon #55
  • Add prefer_fat_arrows_in_methods rule #15

3.1.3 (2020-04-08)

Fix newlines_after_classes when there are blank lines before last line in class.

  • Fix newlines_after_classes #52
  • Remove relics from coffeescript <= v1.10.0 #53

3.1.2 (2020-04-05)

Update coffeescript dependency to v2.5.1.

  • Update coffeescript dependency. #50

3.1.1 (2020-03-22)

Update commandline dependency to maintained dependency.

  • Replace optimist with yargs. #46

1.16.2 (2020-02-06)

First 1.x release under new npm package; to use: npm install -g @coffeelint/cli@old

  • Don’t unnecessarily print “context:” at the end of some error messages #42

3.1.0 (2020-02-06)

Added a few rules and rules options. More bug fixes and internal updates to make developing easier. We got through the backlog of pull requests. Now on to the issues...

  • Add prefer_logical_operator rule. #13
  • Add missing_parseint_radix rule. #17
  • Add bracket_spacing rule. #26
  • space_operators: add default_parameters option. #16
  • colon_assignment_spacing: add min_left and min_right option. #22
  • spacing_after_comma: add ignore_elision option. #34
  • braces_spacing: add mono_object_spaces option. #17
  • Properly double quote fields in csv reporter. #14
  • Stop printing empty context in checkstyle reporter. #12
  • no_tabs rejects tabs at the end of the line. #20
  • Prevent endless loop if lineNumber is negative. #10
  • Update dependency resolve to v1.15.1

3.0.2 (2020-01-22)

small fixes

  • Bugfix for error message when a config file cannot be found. #38
  • Update dependency resolve to v1.15.0
  • Update documentation

3.0.1 (2020-01-22)

CoffeeLint has a new webpage at https://coffeelint.github.io

  • Update dependencies and clean up documentation

3.0.0 (2020-01-14)

CoffeeLint has a new home at https://github.com/coffeelint/coffeelint and a new npm package @coffeelint/cli.

  • Bugfix for error message when an unknown level is used. #4
  • Bugfix for error duplicate_key when keys are wrapped in quotes. #6
  • Add no_spaces rule to disallow spaces for indentation. #7
  • Several enhancements, including CJSX fixes. #8
  • Add rule name to default reporter. #11

1.15.0 (2015-11-18)

This version updates the enable/disable directives. In addition to the existing # coffeelint: disable=rule_name you can also use # coffeelint: disable-line=rule_name. The rule name is still optional in both cases, and you can enable the rules using the same syntax.

You can also use # noqa as a shortcut for # coffeelint: disable-line

  • See #552 for more details.

1.14.1 (2015-11-18)

Most of the changes are more for linting the development files of coffeelint. The minor version increase is due to the change in cyclomatic_complexity, which now ignores nested functions. I foresee this change affecting very few people but probably still needs a minor version increase.

  • cyclomatic_complexity rule has been changed to ignore nested functions
  • 1.4.1: inlined rules not previously specified in JSON config now properly return a message

1.13.0 (2015-10-07)

The v1.12.x versions are considered buggy and you should upgrade to v1.13.x if you experience problems

These releases were largely for bugfixes!

  • Bugfix for no_implicit_braces causing errors in classes and other edge cases
  • Bugfix for ensure_comprehensions where it failed if a nested loop had an equal sign
  • Bugfix for braces_spacing failing over generated curly braces
  • Several changes to indentation See bffa25 for the full list of changes. However between the release of v1.12.0 and v1.13.0, a regression was caused by fixing one of the indentation requests and as a result the change was reverted. The revert will most likely not affect too many users
  • Bugfix for newlines_after_classes, also fixed regressions caused between v1.12.0 and v1.13.0. If you have v1.12.x and are experiencing problems, please upgrade. Also note nested classes are now ignored completely
  • no_this is now compatible with no_stand_alone_at and will make checks against singular this
  • Bugfix for missing_fat_arrows, declaring a class prototype (via '::' operator) no longer fail if they don't use a fat arrow
  • Bugfix for eol_last, it now fails if there are multiple newlines at the end of a file (thanks charlierudolph)-
  • Bugfix for arrow_spacing, now ignores arrow spacing in empty functions (thanks sgentle)

1.11.0 (2015-08-19)

  • New config option { "extends": "coffeelint-config-myconfig" } based on eslint's shareable configs
  • New rule no_nested_string_interpolation
  • New rule no_private_function_fat_arrows
  • New CLI option --ext to specify alternate file extensions to check
  • Bugfixes including tracking nested string interpolation which eleminates some misleading warnings

1.10.0 (2015-05-31)

  • New option --trimconfig. shows the minimal config to implement your customizations.
  • New rule eol_last
  • New rule no_this (prefer @ instead)
  • New option in no_debugger to flag console calls

  • Many small bug fixes

1.9.6 (2015-05-05)

  • Fix no_interpolation_in_single_quotes to only handle single quotes #400
  • Avoid non-standard String.prototype.trimRight #401
  • Strip comments from config file before parsing #407
  • missing_fat_arrows: fix constructor checking in strict mode #409
  • Use configfilter to expand module names

1.9.4 (2015-04-06)

  • missing_fat_arrows: added strict-mode option, defaults to false
  • Add "empty_object_spaces" to braces_spacing

1.9.3 (2015-03-29)

  • Add fat arrow to arrow_spacing
  • Fix an exception when package.json can't be parsed.

1.9.1 (2015-02-22)

  • Small change to make CoffeeLint compatible with atom.io

1.9.0 (2015-02-20)

  • Updated to CoffeeScript 1.9.1 thanks to swang
  • Fix no_implicit_braces error in class declarations
  • New rule braces_padding

1.8.1 (2014-12-20)

  • New rule ensure_comprehensions (warn by default)
  • Added options to transform code before processing it. (JSX support) or to use a different flavor of CoffeeScript.
  • New rule transform_messes_up_line_numbers. This simply tells you if a transform you're using changes the total number of lines in the file.

1.7.1 (2014-12-15)

  • Fix for spacing_after_comma so that newlines count as space after commas

1.7.0 (2014-12-12)

  • New rule spacing_after_comma
  • Indentation improvements
  • Fix Block RegExp triggering in no_unnecessary_double_quotes

1.6.0 (2014-08-30)

  • New rule prefer_english_operator
  • New behavior .coffeelintignore works just like a .gitignore
  • Exposed ErrorReporter to 3rd parties so reporters can be used outside our CLI implementation. See #330 for details
  • Linting from STDIN will look for config files.
  • -f option can specify a package.json that contains coffeelintConfig
  • Depricated --no-color in favor of new --color=<always/never/auto> option
  • Fixed an indentation bug when you have a blank line in the middle of a chained call.

1.5.5 (2014-08-12)

  • #317 Change $HOME search priority to account for non-default windows users.
  • #320 Remove support for chaining calls using a dot at the end of a line.
  • Removed extra messages that broke XML output.

1.5.3 (2014-08-08)

  • Indentation improvements for chained calls. See #285
  • Fixed some missing cases for space_operators
  • Fix for a last-line edge case in no_implicit_parens
  • Fixed trailing semicolons in multi-line strings with multiple embedded tokens

1.5.2 (2014-06-07)

  • #280 Fix for fat-arrow false positives. It was producing errors when the class is defined inside a function (AMD style)
  • MANY indentation fixes. See #282.

1.5.0 (2014-05-28)

  • New: --cache and coffeelint.setCache(obj)
  • Rule module loading is not limited to running from the commandline. See #279
  • Fix for #173: Empty functions surrounded by parens don't require spacing.
  • Fix for #271: trailing semicolons multiline strings are ignored
  • Fix for #214: no_unnecessary_fat_arrows doesn't trigger if the function contains super.

1.4.0 (2014-05-16)

  • Similar to grunt-cli, the coffeelint command will now load the project-specific version of coffeelint if there is one there.
  • 3rd party rules don't have to be globally installed any more.
  • Added --reporter option that also supports 3rd party reporters. coffeelint-stylish is the first one available.
  • Documentation for new users and 3rd party developers.

1.3.0 (2014-04-17)

  • New rule no_empty_functions
  • Improved documentation on how to contribute in README.md
  • Rules using the AST work with a minified version of CoffeeScript
  • Fixed line length check to account for windows line endings

1.2.0 (2014-03-07)

  • New rule no_debugger
  • New rule no_interpolation_in_single_quotes
  • New rule no_unnecessary_double_quotes
  • Strict mode for no_implicit_parens. Turning it off allows implicit parens when they span multiple lines.

1.1.0 (2014-02-22)

  • CoffeeScript 1.7 support
  • Dropped support for CoffeeScript 1.6. (Use ~1.0.0 if you still need it)

1.0.0 (2013-11-21)

  • CoffeeLint will detect config files by default.
  • New rule colon_assignment_spacing
  • New rule no_unnecessary_fat_arrows
  • New rule missing_fat_arrows
  • Added an option to no_trailing_whitespace to forbid trailing space on empty lines
  • Added an option to no_implicit_braces to allow unambiguous implicit braces
  • Fixed --makeconfig
  • New option: --checkstyle
  • Fixed invalid XML produced by --jslint
  • Removed the need for the -r flag. It remains for backward compatibility but doesn't do anything now

0.6.0 (2013-10-10)

  • New internal structure to support custom rules.
  • Dropped support for NodeJS 0.6.

0.5.7 (2013-08-10)

0.5.6 (2013-06-07)

0.5.4 (2012-11-06)

  • Support for default configuration file using environment variable COFFEELINT_CONFIG.

0.5.3 (2012-11-06)

  • Added no_stand_alone_at rule.
  • Fixed correctly reporting line numbers of compilation errors after line 10.
  • Fixed incomplete results output.

0.5.2 (2012-09-18)

  • Added --nocolor option.
  • My main man ruddzw fixed issue #58, in which the -q option was suppressing information even when it was off.
  • Fixed broken jslint option.
  • The no_trailing_semicolons rule now works on Windows files.

0.5.1 (2012-09-15)

  • Show CoffeeScript syntax errors in the same manner as lint errors.
  • Brad Dunbar added the -q command line option, which only prints errors.

0.5.0 (2012-09-08)

  • Lint code from stdin with the --stdin option, thanks to sjz.
  • Added the no_implicit_parens rule.
  • Leandro Ostera added the --jslint reporter, to allow CoffeeLint to integrate with the Jenkin's violations plugin.
  • Implicit braces are always allowed in in class defiinitions, thanks to Omar Khan.
  • CoffeeLint now requires CoffeeScript 1.3.3

0.4.0 (2012-04-06)

  • Added fancy coloured output and proper CSV output.
  • Directories can be recursively linted.
  • Added the line endings rule.
  • Rewrote the command line tool in CoffeeScript.

0.3.0 (2012-03-13)

  • Added the no_backticks rule.
  • Colorized the command line output.
  • Added validation for the rule names.
  • Allowed windows line endings, thanks to szinsli.

0.2.0 (2012-01-26)

  • Added warnings, which will be reported, but won't fail the command line tool.

0.1.0 (2012-01-22)

  • Initial CoffeeLint release.