0.5.0 • Published 1 month ago

eslint-plugin-smile v0.5.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

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

1 month ago

0.4.0

6 months ago

0.3.3

6 months ago

0.3.0

8 months ago

0.3.2

8 months ago

0.3.1

8 months ago

0.2.2

11 months ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.0

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago