{"id":15102950,"url":"https://github.com/meteor/eslint-plugin-meteor","last_synced_at":"2025-09-27T01:30:30.524Z","repository":{"id":46640949,"uuid":"43080782","full_name":"meteor/eslint-plugin-meteor","owner":"meteor","description":"🧐 Meteor specific linting rules for ESLint","archived":true,"fork":false,"pushed_at":"2021-10-02T07:41:19.000Z","size":3987,"stargazers_count":118,"open_issues_count":9,"forks_count":20,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-05-19T05:33:46.376Z","etag":null,"topics":["eslint","eslint-plugin-meteor","meteor"],"latest_commit_sha":null,"homepage":"https://medium.com/@dferber90/8f229ebc7942","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/meteor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-24T17:03:56.000Z","updated_at":"2024-03-25T16:14:31.000Z","dependencies_parsed_at":"2022-09-02T12:00:56.816Z","dependency_job_id":null,"html_url":"https://github.com/meteor/eslint-plugin-meteor","commit_stats":null,"previous_names":["dferber90/eslint-plugin-meteor"],"tags_count":65,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meteor%2Feslint-plugin-meteor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meteor%2Feslint-plugin-meteor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meteor%2Feslint-plugin-meteor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meteor%2Feslint-plugin-meteor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meteor","download_url":"https://codeload.github.com/meteor/eslint-plugin-meteor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234369845,"owners_count":18821341,"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":["eslint","eslint-plugin-meteor","meteor"],"created_at":"2024-09-25T19:09:56.937Z","updated_at":"2025-09-27T01:30:30.173Z","avatar_url":"https://github.com/meteor.png","language":"JavaScript","funding_links":[],"categories":["Packages"],"sub_categories":[],"readme":"# ESLint-plugin-Meteor\n\nMeteor specific linting rules for ESLint\n\n[![Build Status][actions-image]][actions-url]\n[![Coverage Status][coverage-image]][coverage-url]\n[![Dependency Status][deps-image]][deps-url]\n\n[![Join the chat at https://gitter.im/dferber90/eslint-plugin-meteor][gitter-image]][gitter-url]\n[![Maintenance Status][status-image]][status-url]\n[![semantic-release][semantic-release-image]][semantic-release]\n[![Commitizen friendly][commitizen-image]][commitizen]\n\n[![License][license-image]][license-url]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][npm-downloads-image]][npm-downloads-url]\n\n\u003e This repository has been merged into Meteor main repository. You can [find it there](https://github.com/meteor/meteor/tree/devel/npm-packages/eslint-plugin-meteor).\n\n![Example](https://raw.githubusercontent.com/dferber90/eslint-plugin-meteor/master/docs/media/epm.gif)\n\n*This gif shows integration of ESLint-plugin-Meteor into Atom. Find out more in the [integration guide](docs/guides/integration.md).*\n\n\n# Quickstart\n## Installation\n\nInstall [ESLint](https://www.github.com/eslint/eslint) and this plugin either locally or globally.\n\n```sh\n$ npm install eslint --save-dev\n$ npm install eslint-plugin-meteor --save-dev\n```\n\n\n## Configuration\n\nCreate an `.eslintrc.json` file with this content at the root of your project:\n\n```json\n{\n  \"plugins\": [\"meteor\"],\n  \"extends\": [\"plugin:meteor/recommended\"]\n}\n```\n\nFor a more thorough introduction, read the [setup guide](/docs/guides/setup.md).\n\nAn article with detailed setup instructions can be found [here](https://medium.com/@dferber90/linting-meteor-8f229ebc7942).\n\n# List of supported rules\n\n## Best Practices\n\n* General\n  * [no-zero-timeout](docs/rules/no-zero-timeout.md): Prevent usage of Meteor.setTimeout with zero delay\n* Session\n  * [no-session](docs/rules/no-session.md): Prevent usage of Session\n  * [prefer-session-equals](docs/rules/prefer-session-equals.md): Prefer `Session.equals` in conditions\n* Security\n  * [audit-argument-checks](docs/rules/audit-argument-checks.md): Enforce check on all arguments passed to methods and publish functions\n* Blaze\n  * [template-names](docs/rules/template-names.md): Naming convention for templates\n  * [no-template-lifecycle-assignments](docs/rules/no-template-lifecycle-assignments.md): Prevent deprecated template lifecycle callback assignments\n  * [eventmap-params](docs/rules/eventmap-params.md): Force consistent event handler parameter names in event maps\n  * [prefix-eventmap-selectors](docs/rules/prefix-eventmap-selectors.md): Convention for eventmap selectors\n  * [scope-dom-lookups](docs/rules/scope-dom-lookups.md): Scope DOM lookups to the template instance\n  * [no-dom-lookup-on-created](docs/rules/no-dom-lookup-on-created.md): Forbid DOM lookups in template creation callback\n  * [no-template-parent-data](docs/rules/no-template-parent-data.md): Avoid accessing template parent data\n\n## Core API\n* *currently no rules implemented*\n\n[Any rule idea is welcome !](https://github.com/dferber90/eslint-plugin-meteor/issues)\n\n## Recommended Configuration\n\nThis plugin exports a recommended configuration which enforces good Meteor practices.\nThe rules enabled in this configuration can be found in [`lib/index.js`](https://github.com/dferber90/eslint-plugin-meteor/blob/master/lib/index.js).\n\nTo enable the recommended configuration use the extends property in your `.eslintrc.json` config file:\n\n```json\n{\n  \"plugins\": [\n    \"meteor\"\n  ],\n  \"extends\": [\"eslint:recommended\", \"plugin:meteor/recommended\"]\n}\n```\n\nYou probably also want to enable ESLint to parse ECMAScript 2015 and to support React templates.\n\nAdd the following to your `.eslintrc.json` config file\n\n```json\n{\n  \"parserOptions\": {\n    \"ecmaVersion\": 6,\n    \"sourceType\": \"module\",\n    \"ecmaFeatures\": {\n        \"jsx\": true\n    }\n  }\n}\n```\n\nSee [ESLint documentation](http://eslint.org/docs/user-guide/configuring#extending-configuration-files) for more information about extending configuration files.\n\n## Limitations\n\nESLint-plugin-Meteor is not aware of where files are going to be executed, to keep the plugin simple.\nIt will not warn when accessing client-only features on the server and vice versa.\n\n# Contributing\n\nRead about [set up of the development environment](/docs/guides/development.md).\n\n# Thanks\n\nThis plugin is inspired by [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react).\n\n# License\n\nESLint-plugin-Meteor is licensed under the [MIT License](http://www.opensource.org/licenses/mit-license.php).\n\n\n[gitter-image]: https://img.shields.io/badge/gitter-chat-e10079.svg?style=flat-square\n[gitter-url]: https://gitter.im/dferber90/eslint-plugin-meteor?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge\n\n[npm-url]: https://npmjs.org/package/eslint-plugin-meteor\n[npm-image]: http://img.shields.io/npm/v/eslint-plugin-meteor.svg?style=flat-square\n\n[npm-downloads-url]: https://npm-stat.com/charts.html?package=eslint-plugin-meteor\n[npm-downloads-image]: https://img.shields.io/npm/dm/eslint-plugin-meteor.svg?style=flat-square\n\n[actions-url]: https://github.com/dferber90/eslint-plugin-meteor/actions?query=workflow%3APR\n[actions-image]: https://img.shields.io/github/workflow/status/dferber90/eslint-plugin-meteor/PR?style=flat-square\n\n[deps-url]: https://david-dm.org/dferber90/eslint-plugin-meteor\n[deps-image]: https://img.shields.io/david/dev/dferber90/eslint-plugin-meteor.svg?style=flat-square\n\n[coverage-url]: https://coveralls.io/github/dferber90/eslint-plugin-meteor?branch=master\n[coverage-image]: http://img.shields.io/coveralls/dferber90/eslint-plugin-meteor/master.svg?style=flat-square\n\n[license-url]: https://github.com/dferber90/eslint-plugin-meteor/blob/master/LICENSE\n[license-image]: https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square\n\n[status-url]: https://github.com/dferber90/eslint-plugin-meteor/pulse\n[status-image]: http://img.shields.io/badge/status-maintained-e10079.svg?style=flat-square\n\n[semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=flat-square\n[semantic-release]: https://github.com/semantic-release/semantic-release\n\n[commitizen-image]: https://img.shields.io/badge/commitizen-friendly-e10079.svg?style=flat-square\n[commitizen]: http://commitizen.github.io/cz-cli/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteor%2Feslint-plugin-meteor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeteor%2Feslint-plugin-meteor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeteor%2Feslint-plugin-meteor/lists"}