Code Monkey home page Code Monkey logo

eslint-plugin-smile's Introduction

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"] }],
    // ...
  }
}

eslint-plugin-smile's People

Contributors

tonai avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.