{"action":"opened","issue":{"url":"https://api.github.com/repos/odecee/generator-confit/issues/25","repository_url":"https://api.github.com/repos/odecee/generator-confit","labels_url":"https://api.github.com/repos/odecee/generator-confit/issues/25/labels{/name}","comments_url":"https://api.github.com/repos/odecee/generator-confit/issues/25/comments","events_url":"https://api.github.com/repos/odecee/generator-confit/issues/25/events","html_url":"https://github.com/odecee/generator-confit/issues/25","id":140035033,"number":25,"title":"How to make Confit more extensible","user":{"login":"uglow","id":3990189,"avatar_url":"https://avatars.githubusercontent.com/u/3990189?v=3","gravatar_id":"","url":"https://api.github.com/users/uglow","html_url":"https://github.com/uglow","followers_url":"https://api.github.com/users/uglow/followers","following_url":"https://api.github.com/users/uglow/following{/other_user}","gists_url":"https://api.github.com/users/uglow/gists{/gist_id}","starred_url":"https://api.github.com/users/uglow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uglow/subscriptions","organizations_url":"https://api.github.com/users/uglow/orgs","repos_url":"https://api.github.com/users/uglow/repos","events_url":"https://api.github.com/users/uglow/events{/privacy}","received_events_url":"https://api.github.com/users/uglow/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/odecee/generator-confit/labels/help%20wanted","name":"help wanted","color":"159818"},{"url":"https://api.github.com/repos/odecee/generator-confit/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-03-10T23:05:23Z","updated_at":"2016-03-10T23:05:23Z","closed_at":null,"body":"In order to make Confit more useful and usable by a wider section of the developer community, it needs to be extensible. See feedback in #24 \r\n\r\nI can think of the following ways to to try to make Confit extensible...\r\n\r\n### Make it possible for Confit to call other Yeoman generators\r\nThis may work by the user installing their own adapter generators and telling the main confit generator (somehow) to use the adapter instead of the default sub-generator.\r\n\r\n#### Pros\r\n- Developers can write their own Confit plugins \r\n\r\n#### Cons\r\n- I don't know how to make a Yeoman generator call an external Yeoman generator, and ensure that the external generator has access to the internal configuration files. Perhaps this could only be done by creating sub-generators?\r\n\r\n### Add support in `confit.json` for extension points, to run external-to-Confit Node commands\r\n\r\nIn this approach, the **generated config** is extensible, rather than the generator itself. This could look like this:\r\n\r\n```console\r\n// confit.json\r\n{\r\n  \"release\": {\r\n    \"someProperty\": \"...\"\r\n    // Developer can customise this next line directly\r\n    \"tasks\": [\"runAllTests\", \"generateDocs\", \"myCustomScript --val=true\", \"commit\", \"publish\"]\r\n  }\r\n```\r\n\r\nAlternatively, since Confit uses NPM for task configuration, it might be possible to allow developers to edit the `package.json` scripts and when `yo confit` rebuilds the tools, to not change user-edited scripts?\r\n\r\n```console\r\n// package.json\r\n{\r\n  \"scripts\": {\r\n    // \"myCustomScript\" is (somehow) not overwritten when Conift is re-run\r\n    \"dev\": \"npm-run-all clean:dev verify myCustomScript --parallel verify:watch build:dev serve:dev\"\r\n  }\r\n```\r\n\r\n### Pros\r\n- This is more in-line with the Confit vision, whereby standard processes are supported, but developers can extend the config without fear that it will be over-written\r\n\r\n### Cons\r\n- ???\r\n\r\nThoughts? @mboudreau, @timweightman @kerenBurshtein @mikrich "}}