{"action":"created","issue":{"url":"https://api.github.com/repos/eslint/eslint/issues/1637","labels_url":"https://api.github.com/repos/eslint/eslint/issues/1637/labels{/name}","comments_url":"https://api.github.com/repos/eslint/eslint/issues/1637/comments","events_url":"https://api.github.com/repos/eslint/eslint/issues/1637/events","html_url":"https://github.com/eslint/eslint/issues/1637","id":53963404,"number":1637,"title":"Allow to extend configuration objects instead of cascading environments config","user":{"login":"mzgol","id":1758366,"avatar_url":"https://avatars.githubusercontent.com/u/1758366?v=3","gravatar_id":"","url":"https://api.github.com/users/mzgol","html_url":"https://github.com/mzgol","followers_url":"https://api.github.com/users/mzgol/followers","following_url":"https://api.github.com/users/mzgol/following{/other_user}","gists_url":"https://api.github.com/users/mzgol/gists{/gist_id}","starred_url":"https://api.github.com/users/mzgol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mzgol/subscriptions","organizations_url":"https://api.github.com/users/mzgol/orgs","repos_url":"https://api.github.com/users/mzgol/repos","events_url":"https://api.github.com/users/mzgol/events{/privacy}","received_events_url":"https://api.github.com/users/mzgol/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/eslint/eslint/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-01-10T16:40:21Z","updated_at":"2015-01-10T16:52:03Z","closed_at":null,"body":"I know extending configurations similarly to what jsHint does was argued early in the project and the current solution is to just propagate options down the tree. This has some unwanted side effects, though.\r\n\r\nA lot of JavaScript projects have structure loosely resembling this one:\r\n```\r\n├─┬ app\r\n│ └── files for the browser\r\n├─┬ dist\r\n│ └── files for the browser\r\n├─┬ test\r\n│ ├── unit tests - executed in a browser\r\n│ └── e2e tests - executed in Node\r\n├── Gruntfile.js - for Node\r\n└── karma.conf.js - for Node\r\n```\r\nThis means that there has to be the `.eslintrc` file contained in the top project scope and it has to have the `node` environment enabled. But that means `\"node\": true` is also the default for `app`/`dist`/`test/unit`/etc. and has to be explicitly disabled in each of them separately which is easy to forget about (or even not think about it being needed).\r\n\r\nOTH, if instead of cascading environments one could extend a file with base config for the whole project, all these workarounds would be unnecessary.\r\n\r\n<bountysource-plugin>\r\n\r\n---\r\nWant to back this issue? **[Place a bounty on it!](https://www.bountysource.com/issues/7639460-allow-to-extend-configuration-objects?utm_campaign=plugin&utm_content=tracker%2F282608&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F282608&utm_medium=issues&utm_source=github).\r\n</bountysource-plugin>"},"comment":{"url":"https://api.github.com/repos/eslint/eslint/issues/comments/69462405","html_url":"https://github.com/eslint/eslint/issues/1637#issuecomment-69462405","issue_url":"https://api.github.com/repos/eslint/eslint/issues/1637","id":69462405,"user":{"login":"nzakas","id":38546,"avatar_url":"https://avatars.githubusercontent.com/u/38546?v=3","gravatar_id":"","url":"https://api.github.com/users/nzakas","html_url":"https://github.com/nzakas","followers_url":"https://api.github.com/users/nzakas/followers","following_url":"https://api.github.com/users/nzakas/following{/other_user}","gists_url":"https://api.github.com/users/nzakas/gists{/gist_id}","starred_url":"https://api.github.com/users/nzakas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nzakas/subscriptions","organizations_url":"https://api.github.com/users/nzakas/orgs","repos_url":"https://api.github.com/users/nzakas/repos","events_url":"https://api.github.com/users/nzakas/events{/privacy}","received_events_url":"https://api.github.com/users/nzakas/received_events","type":"User","site_admin":false},"created_at":"2015-01-10T16:52:03Z","updated_at":"2015-01-10T16:52:03Z","body":"I'm just not sure extending configs is useful enough to add that complexity on top of what we already have. The cascading configuration turned out to be very complex and took a while to get correct but overall feedback has been positive. Inserting another way of modifying the config into what's already a complex system is something I'd like to avoid unless it's really necessary."}}