npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@fellow/eslint-plugin-coffee

v0.4.13

Published

Transpiles coffee files (.coffee, .cjsx) and runs through eslint. Reports errors with original line numbers.

Downloads

5,180

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)

It additionally runs rules from coffeelint2 by creating a fake rule in eslint which wraps and maps the coffeelint2 rules.

Special thanks to Alexander Mextner for getting this started and providing the base code.

Installation

You'll first need to install ESLint:

$ 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). 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.

{ 
    "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:

{
  "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:

{
  "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

VSCode

For linting to work in VS Code, install the eslint extension and add the following to your workspace settings:

"settings": {
    ...
    "files.associations": {
        "*.cjsx": "coffeescript"
    },
    "eslint.validate": [
        "javascript",
        "javascriptreact",
        "coffeescript"
    ],
},