{"id":13800729,"url":"https://github.com/mysticatea/eslint-plugin","last_synced_at":"2025-08-25T12:11:44.683Z","repository":{"id":33752901,"uuid":"37408127","full_name":"mysticatea/eslint-plugin","owner":"mysticatea","description":"ESLint configurations and additional rules for me","archived":false,"fork":false,"pushed_at":"2022-11-14T23:56:33.000Z","size":312,"stargazers_count":26,"open_issues_count":26,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-19T00:07:30.784Z","etag":null,"topics":["ecmascript","eslint","eslint-plugin","javascript","static-code-analysis"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mysticatea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["mysticatea"]}},"created_at":"2015-06-14T10:22:32.000Z","updated_at":"2024-08-15T05:52:23.000Z","dependencies_parsed_at":"2023-01-15T02:21:11.352Z","dependency_job_id":null,"html_url":"https://github.com/mysticatea/eslint-plugin","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysticatea%2Feslint-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysticatea%2Feslint-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysticatea%2Feslint-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysticatea%2Feslint-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mysticatea","download_url":"https://codeload.github.com/mysticatea/eslint-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250917284,"owners_count":21507561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecmascript","eslint","eslint-plugin","javascript","static-code-analysis"],"created_at":"2024-08-04T00:01:15.661Z","updated_at":"2025-04-26T00:33:22.649Z","avatar_url":"https://github.com/mysticatea.png","language":"JavaScript","readme":"# @mysticatea/eslint-plugin\n\n[![npm version](https://img.shields.io/npm/v/@mysticatea/eslint-plugin.svg)](https://www.npmjs.com/package/@mysticatea/eslint-plugin)\n[![Downloads/month](https://img.shields.io/npm/dm/@mysticatea/eslint-plugin.svg)](http://www.npmtrends.com/@mysticatea/eslint-plugin)\n[![Build Status](https://github.com/mysticatea/eslint-plugin/workflows/CI/badge.svg)](https://github.com/mysticatea/eslint-plugin/actions)\n[![codecov](https://codecov.io/gh/mysticatea/eslint-plugin/branch/master/graph/badge.svg)](https://codecov.io/gh/mysticatea/eslint-plugin)\n[![Dependency Status](https://david-dm.org/mysticatea/eslint-plugin.svg)](https://david-dm.org/mysticatea/eslint-plugin)\n\nAdditional ESLint rules and ESLint configurations for me.\n\n## 💿 Installation\n\n```\nnpm install --save-dev eslint @mysticatea/eslint-plugin\n```\n\n### Requirements\n\n- Node.js `^8.10.0` or newer versions.\n- ESLint `^6.3.0` or newer versions.\n\n## 📖 Usage\n\nWrite in your ESLint configurations: http://eslint.org/docs/user-guide/configuring#using-the-configuration-from-a-plugin\n\n### Configs\n\n- `plugin:@mysticatea/es2020` ... Basic configuration for ES2020.\n- `plugin:@mysticatea/es2019` ... Basic configuration for ES2019.\n- `plugin:@mysticatea/es2018` ... Basic configuration for ES2018.\n- `plugin:@mysticatea/es2017` ... Basic configuration for ES2017.\n- `plugin:@mysticatea/es2016` ... Basic configuration for ES2016.\n- `plugin:@mysticatea/es2015` ... Basic configuration for ES2015.\n- `plugin:@mysticatea/es5` ... Basic configuration for ES5.\n- `plugin:@mysticatea/+modules` ... Additional configuration for ES modules.\n- `plugin:@mysticatea/+browser` ... Additional configuration for browser environment.\n- `plugin:@mysticatea/+node` ... Additional configuration for Node.js environment.\n- `plugin:@mysticatea/+eslint-plugin` ... Additional configuration for ESLint plugins. This includes `plugin:mysticatea/+node` setting.\n\n#### Details\n\nThe main configurations `plugin:@mysticatea/es*` does:\n\n- detect bug-like code by ESLint rules.\n- enforce whitespace style by Prettier.\n- handle the `.ts` files as TypeScript then check by `typescript-eslint-parser` and `eslint-plugin-typescript`.\n- handle the `.vue` files as Vue.js SFC then check by `vue-eslint-parser` and `eslint-plugin-vue`.\n- handle the files in `test`/`tests` directory as `mocha`'s test code.\n- handle the files in `scripts` directory as Node.js environment.\n- handle the `.eslintrc.js` file as a Node.js script.\n- handle the `webpack.config.js` file as a Node.js script.\n- handle the `rollup.config.js` file as an ES module.\n\nYou can use combination of a main configuration and some additional configurations.\nFor examples:\n\n##### For Node.js\n\n```json\n{\n    \"extends\": [\n        \"plugin:@mysticatea/es2015\",\n        \"plugin:@mysticatea/+node\"\n    ]\n}\n```\n\n\u003e It handles `.js` files as scripts and `.mjs` files as modules.\n\n##### For Browsers\n\n```json\n{\n    \"extends\": [\n        \"plugin:@mysticatea/es2015\",\n        \"plugin:@mysticatea/+browser\"\n    ]\n}\n```\n\n##### For Browsers with ES modules\n\n```json\n{\n    \"extends\": [\n        \"plugin:@mysticatea/es2015\",\n        \"plugin:@mysticatea/+modules\",\n        \"plugin:@mysticatea/+browser\"\n    ]\n}\n```\n\n##### For ESLint plugins\n\n```json\n{\n    \"extends\": [\n        \"plugin:@mysticatea/es2015\",\n        \"plugin:@mysticatea/+eslint-plugin\"\n    ]\n}\n```\n\n### Rules\n\nThis plugin has some original rules and foreign rules.\n\n#### Original rules\n\n- [@mysticatea/arrow-parens](docs/rules/arrow-parens.md) enforces parens of argument lists (excludes too redundant parens) (fixable).\n- [@mysticatea/block-scoped-var](docs/rules/block-scoped-var.md) handles variables which are declared by `var` declaration as block-scoped. It disallows redeclarations, uses from outside of the scope, shadowing.\n- [@mysticatea/no-instanceof-array](docs/rules/no-instanceof-array.md) disallows 'instanceof' for Array (fixable).\n- [@mysticatea/no-instanceof-wrapper](docs/rules/no-instanceof-wrapper.md) disallows 'instanceof' for wrapper objects (fixable).\n- [@mysticatea/no-literal-call](docs/rules/no-literal-call.md) disallows a call of a literal.\n- [@mysticatea/no-this-in-static](docs/rules/no-this-in-static.md) disallows `this`/`super` in static methods.\n- [@mysticatea/no-use-ignored-vars](docs/rules/no-use-ignored-vars.md) disallows a use of ignored variables.\n- [@mysticatea/no-useless-rest-spread](docs/rules/no-useless-rest-spread.md) disallows unnecessary rest/spread operators (fixable).\n- [@mysticatea/prefer-for-of](docs/rules/prefer-for-of.md) requires `for-of` statements instead of `Array#forEach` or something like (fixable).\n\n#### Foreign rules\n\n- All `@mysticatea/eslint-comments/*` rules are imported from [eslint-plugin-eslint-comments](https://www.npmjs.com/package/eslint-plugin-eslint-comments).\n- All `@mysticatea/eslint-plugin/*` rules are imported from [eslint-plugin-eslint-plugin](https://www.npmjs.com/package/eslint-plugin-eslint-plugin).\n- All `@mysticatea/node/*` rules are imported from [eslint-plugin-node](https://www.npmjs.com/package/eslint-plugin-node).\n- All `@mysticatea/ts/*` rules are imported from [eslint-plugin-typescript](https://www.npmjs.com/package/eslint-plugin-typescript).\n- All `@mysticatea/vue/*` rules are imported from [eslint-plugin-vue](https://www.npmjs.com/package/eslint-plugin-vue).\n- The `@mysticatea/prettier` rule is imported from [eslint-plugin-prettier](https://www.npmjs.com/package/eslint-plugin-prettier).\n\n\u003e **Q:** Why don't you use those plugins directly?\u003cbr\u003e\n\u003e **A:** The combination with shareable configs and plugins has some problems because shareable configs were not designed to be used with plugins. @nzakas illustrated a way to use plugins as shareable configs together with other plugins in the discussion [eslint/eslint#3458](https://github.com/eslint/eslint/issues/3458#issuecomment-257161846). This is the way.\n\n## 🚥 Semantic Versioning Policy\n\nThis plugin follows [semantic versioning](http://semver.org/) and [ESLint's Semantic Versioning Policy](https://github.com/eslint/eslint#semantic-versioning-policy).\n\n## 📰 Changelog\n\n- [GitHub Releases](https://github.com/mysticatea/eslint-plugin/releases)\n\n## ❤️ Contributing\n\nWelcome contributing!\n\nPlease use GitHub's Issues/PRs.\n\n### Development Tools\n\n- `npm test` runs tests and measures coverage.\n- `npm run clean` removes the coverage result of `npm test` command.\n- `npm run coverage` shows the coverage result of `npm test` command.\n- `npm run update` updates auto-generated files.\n- `npm run watch` runs tests and measures coverage when source code are changed.\n","funding_links":["https://github.com/sponsors/mysticatea"],"categories":["Plugins"],"sub_categories":["Code Quality"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmysticatea%2Feslint-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmysticatea%2Feslint-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmysticatea%2Feslint-plugin/lists"}