{"action":"closed","issue":{"url":"https://api.github.com/repos/michalkvasnicak/create-js-app/issues/11","repository_url":"https://api.github.com/repos/michalkvasnicak/create-js-app","labels_url":"https://api.github.com/repos/michalkvasnicak/create-js-app/issues/11/labels{/name}","comments_url":"https://api.github.com/repos/michalkvasnicak/create-js-app/issues/11/comments","events_url":"https://api.github.com/repos/michalkvasnicak/create-js-app/issues/11/events","html_url":"https://github.com/michalkvasnicak/create-js-app/issues/11","id":178651130,"number":11,"title":"Plugin system","user":{"login":"michalkvasnicak","id":174716,"avatar_url":"https://avatars.githubusercontent.com/u/174716?v=3","gravatar_id":"","url":"https://api.github.com/users/michalkvasnicak","html_url":"https://github.com/michalkvasnicak","followers_url":"https://api.github.com/users/michalkvasnicak/followers","following_url":"https://api.github.com/users/michalkvasnicak/following{/other_user}","gists_url":"https://api.github.com/users/michalkvasnicak/gists{/gist_id}","starred_url":"https://api.github.com/users/michalkvasnicak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michalkvasnicak/subscriptions","organizations_url":"https://api.github.com/users/michalkvasnicak/orgs","repos_url":"https://api.github.com/users/michalkvasnicak/repos","events_url":"https://api.github.com/users/michalkvasnicak/events{/privacy}","received_events_url":"https://api.github.com/users/michalkvasnicak/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/michalkvasnicak/create-js-app/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-09-22T16:02:05Z","updated_at":"2016-10-07T06:49:24Z","closed_at":"2016-10-07T06:49:24Z","body":"Create-js-app should work as plugin runner which exposes some api to control flow of runner.\r\n\r\nFor example if user does not want a server build, he/she should disable or enable only plugins he/she wants.\r\n\r\n```js\r\n// .app.js\r\n\r\nmodule.exports = {\r\n   plugins: [\r\n      require.resolve('create-js-app-scripts/plugins/default.client'),\r\n      require.resolve('create-js-app-scripts/plugins/default.server'),\r\n      require.resolve('create-js-app-scripts/plugins/graphql.watch')\r\n   ],\r\n   settings: {\r\n      // some settings passed to every plugin\r\n   }\r\n};\r\n```\r\n\r\nNow anyone can create his own plugins.\r\n\r\n* Every plugin should expose methods to control them from tasks eg. `start, build`.\r\n* Every plugin should accept api as an argument to initializer so it can communicate with other plugins and with the runner\r\n\r\nFor example, we don't want to start server build if client assets are not built. Or we want to restart whole build if `.app.js` changes.\r\n"}}
{"actor":{"display_login":"michalkvasnicak"}}