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

eslint-plugin-smile

v0.5.0

Published

Smile ESLint rules for js, ts, react, vue, angular, next...

Downloads

615

Readme

eslint-plugin-smile

This ESLint configuration enforces some rules for eslint.

Installation

Assuming you already have ESLint installed, run:

# npm
npm install eslint-plugin-smile --save-dev

# yarn
yarn add eslint-plugin-smile --dev

Framework configuration

JavaScript project

Update .eslintrc.json with:

{
  "extends": ["plugin:smile/js"]
}

For TypeScript support see TypeScript configuration.

React project

Install peerDependency:

npm i -D eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-react-refresh

And update .eslintrc.json with:

{
  "extends": ["plugin:smile/react"]
}

For TypeScript support see TypeScript configuration.

Vue project

Install peerDependency:

npm i -D eslint-plugin-vue

And update .eslintrc.json with:

{
  "extends": ["plugin:smile/vue"]
}

For TypeScript also install following dependency:

npm i -D @vue/eslint-config-prettier @vue/eslint-config-typescript @rushstack/eslint-patch

And update .eslintrc.json with:

require('@rushstack/eslint-patch/modern-module-resolution');

module.exports = {
  extends: ['plugin:smile/vue-ts'],
};

And see TypeScript configuration.

Angular project

You can eslint to your project with npm run ng add @angular-eslint/schematics.

Then update .eslintrc.json with:

{
  "extends": ["plugin:smile/angular"]
}

And see TypeScript configuration.

Also see Prettier configuration

Next project

Install peerDependency:

npm i -D eslint-config-next

And update .eslintrc.json with:

{
  "extends": ["plugin:smile/next"]
}

For TypeScript support see TypeScript configuration.

Nuxt project

Install peerDependency:

npm i -D @nuxt/eslint-config eslint-plugin-nuxt

And update .eslintrc.json with:

{
  "extends": ["plugin:smile/nuxt"]
}

For TypeScript support see TypeScript configuration.

Tools configurations

Jest project

If you use Jest in your project you can add the plugin:smile/jest configuration:

Install peerDependency:

npm i -D eslint-plugin-jest eslint-plugin-testing-library

And update .eslintrc.json with:

{
  "extends": ["plugin:smile/jest"]
}

Cypress

Cypress files will be automatically checked with any framework configuration.

Storybook

Storybook files will be automatically checked with any framework configuration.

TypeScript configuration

Install additional peerDependency:

npm i -D eslint-import-resolver-typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser

TypeScript is already supported in following configurations:

  • plugin:smile/js
  • plugin:smile/react
  • plugin:smile/angular
  • plugin:smile/next
  • plugin:smile/nuxt

For Vue use plugin:smile/vue-ts instead.

If you want to use additional rules that require type checking (see https://typescript-eslint.io/linting/typed-linting/) you can add install additional peerDependency:

npm i -D @typescript-eslint/eslint-plugin @typescript-eslint/parser

And add the following configuration plugin:smile/ts (in addition to your framework configuration) and add the parserOptions.project option (see https://typescript-eslint.io/packages/parser/#project).

Example:

{
  "extends": ["plugin:smile/next", "plugin:smile/ts"],
  "parserOptions": {
    "project": ["./tsconfig.json"]
  }
}

Prettier configuration

This package use eslint-plugin-prettier to format the code with prettier through eslint.

We recommend using a .prettierrc file a the root of your project and apply the following configuration:

{
  "singleQuote": true
}

Also create a .editorconfig file with:

[*]
charset = utf-8
insert_final_newline = true
end_of_line = lf
indent_style = space
indent_size = 2
max_line_length = 80
trim_trailing_whitespace = true

For angular add the following configuration into the .prettierrc file:

{
  "overrides": [
    {
      "files": "*.html",
      "options": {
        "parser": "angular"
      }
    }
  ]
}

Custom Configuration

You can override some rules in the rule section:

{
  "extends": ["plugin:smile/js"],
  "rules": {
    "no-underscore-dangle": ["error", { allow: ["__schema"] }],
    // ...
  }
}