{"action":"created","comment":{"url":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/comments/221980830","pull_request_review_id":160758958,"id":221980830,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMTk4MDgzMA==","diff_hunk":"@@ -0,0 +1,161 @@\n+Thanks everyone for checking this out. I've started on the code and am a happy to be the one to implement most/all of this. Thanks for the feedback all keep up the great work on gatsby.\n+\n+\n+- Start Date: 2018-09-28\n+- RFC PR: (leave this empty)\n+- Gatsby Issue: (leave this empty)\n+\n+# Summary\n+\n+I find it  tedious to have to do the same 3 steps every time I add a plugin to gatsby.\n+\n+* `npm instal *plugin*`\n+* Check plugin docs for correct -`gatsby-config.js` syntax\n+* modify `gatsby-config.js`\n+\n+I'm suggesting we create an additional command to add and remove plugins using the `gatsby-cli`.\n+\n+# Basic example\n+\n+A new work flow for installing a plugin could look something like this:\n+\n+* `gatsby plugin add gatsby-transformer-x` (this would run npm install for the plugin and inject an initial config into `gatsby-config.js`)\n+\n+* For plugins that don't require additional config we're done. If they do I at least have the basics that I can probably understand how to modify from a quick glance. ie. `path: /your/path/to/xyz.whatever` I know what this needs to point to and I can do that without checking docs.\n+\n+* if needed then the dev can check docs.\n+\n+\n+A new work flow for removing a plugin could look like:\n+ \n+ * `gatsby plugin remove gatsby-transformer-x` (This would just remove the config for that plugin and remove the package using npm from the `package.json` and node_modules.)","path":"text/0000-gatsby-plugin-cli.md","position":31,"original_position":31,"commit_id":"55984e328404620d2d4d4d6c3c3598c8d53bf543","original_commit_id":"55984e328404620d2d4d4d6c3c3598c8d53bf543","user":{"login":"jlengstorf","id":163561,"node_id":"MDQ6VXNlcjE2MzU2MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/163561?v=4","gravatar_id":"","url":"https://api.github.com/users/jlengstorf","html_url":"https://github.com/jlengstorf","followers_url":"https://api.github.com/users/jlengstorf/followers","following_url":"https://api.github.com/users/jlengstorf/following{/other_user}","gists_url":"https://api.github.com/users/jlengstorf/gists{/gist_id}","starred_url":"https://api.github.com/users/jlengstorf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jlengstorf/subscriptions","organizations_url":"https://api.github.com/users/jlengstorf/orgs","repos_url":"https://api.github.com/users/jlengstorf/repos","events_url":"https://api.github.com/users/jlengstorf/events{/privacy}","received_events_url":"https://api.github.com/users/jlengstorf/received_events","type":"User","site_admin":false},"body":"A confirmation seems like a good idea to me. There's no harm in doing it, and it'll make it very clear how the CLI is changing the project — less magic is a good think, in my opinion.\r\n\r\nIf we want to get really wild, we could look at settings for the CLI to allow this to be toggled on or off, but that's a discussion for another day.","created_at":"2018-10-02T14:44:58Z","updated_at":"2018-10-02T14:44:58Z","html_url":"https://github.com/gatsbyjs/rfcs/pull/13#discussion_r221980830","pull_request_url":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/13","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/comments/221980830"},"html":{"href":"https://github.com/gatsbyjs/rfcs/pull/13#discussion_r221980830"},"pull_request":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/13"}},"in_reply_to_id":221515931},"pull_request":{"url":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/13","id":219112943,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE5MTEyOTQz","html_url":"https://github.com/gatsbyjs/rfcs/pull/13","diff_url":"https://github.com/gatsbyjs/rfcs/pull/13.diff","patch_url":"https://github.com/gatsbyjs/rfcs/pull/13.patch","issue_url":"https://api.github.com/repos/gatsbyjs/rfcs/issues/13","number":13,"state":"open","locked":false,"title":"gatsby-cli plugin management","user":{"login":"moonmeister","id":2730871,"node_id":"MDQ6VXNlcjI3MzA4NzE=","avatar_url":"https://avatars1.githubusercontent.com/u/2730871?v=4","gravatar_id":"","url":"https://api.github.com/users/moonmeister","html_url":"https://github.com/moonmeister","followers_url":"https://api.github.com/users/moonmeister/followers","following_url":"https://api.github.com/users/moonmeister/following{/other_user}","gists_url":"https://api.github.com/users/moonmeister/gists{/gist_id}","starred_url":"https://api.github.com/users/moonmeister/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/moonmeister/subscriptions","organizations_url":"https://api.github.com/users/moonmeister/orgs","repos_url":"https://api.github.com/users/moonmeister/repos","events_url":"https://api.github.com/users/moonmeister/events{/privacy}","received_events_url":"https://api.github.com/users/moonmeister/received_events","type":"User","site_admin":false},"body":"Thanks everyone for checking this out. I've started on the code and am a happy to be the one to implement most/all of this. Thanks for the feedback all, keep up the great work on Gatsby.\r\n\r\nAJ\r\n","created_at":"2018-09-29T00:25:16Z","updated_at":"2018-10-02T14:44:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bc12bd9794cb36d4f5c401fdf14347c1f4a1f613","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/13/commits","review_comments_url":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/13/comments","review_comment_url":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/gatsbyjs/rfcs/issues/13/comments","statuses_url":"https://api.github.com/repos/gatsbyjs/rfcs/statuses/55984e328404620d2d4d4d6c3c3598c8d53bf543","head":{"label":"moonmeister:gatsby-plugin-cli-rfc","ref":"gatsby-plugin-cli-rfc","sha":"55984e328404620d2d4d4d6c3c3598c8d53bf543","user":{"login":"moonmeister","id":2730871,"node_id":"MDQ6VXNlcjI3MzA4NzE=","avatar_url":"https://avatars1.githubusercontent.com/u/2730871?v=4","gravatar_id":"","url":"https://api.github.com/users/moonmeister","html_url":"https://github.com/moonmeister","followers_url":"https://api.github.com/users/moonmeister/followers","following_url":"https://api.github.com/users/moonmeister/following{/other_user}","gists_url":"https://api.github.com/users/moonmeister/gists{/gist_id}","starred_url":"https://api.github.com/users/moonmeister/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/moonmeister/subscriptions","organizations_url":"https://api.github.com/users/moonmeister/orgs","repos_url":"https://api.github.com/users/moonmeister/repos","events_url":"https://api.github.com/users/moonmeister/events{/privacy}","received_events_url":"https://api.github.com/users/moonmeister/received_events","type":"User","site_admin":false},"repo":{"id":150801007,"node_id":"MDEwOlJlcG9zaXRvcnkxNTA4MDEwMDc=","name":"rfcs","full_name":"moonmeister/rfcs","private":false,"owner":{"login":"moonmeister","id":2730871,"node_id":"MDQ6VXNlcjI3MzA4NzE=","avatar_url":"https://avatars1.githubusercontent.com/u/2730871?v=4","gravatar_id":"","url":"https://api.github.com/users/moonmeister","html_url":"https://github.com/moonmeister","followers_url":"https://api.github.com/users/moonmeister/followers","following_url":"https://api.github.com/users/moonmeister/following{/other_user}","gists_url":"https://api.github.com/users/moonmeister/gists{/gist_id}","starred_url":"https://api.github.com/users/moonmeister/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/moonmeister/subscriptions","organizations_url":"https://api.github.com/users/moonmeister/orgs","repos_url":"https://api.github.com/users/moonmeister/repos","events_url":"https://api.github.com/users/moonmeister/events{/privacy}","received_events_url":"https://api.github.com/users/moonmeister/received_events","type":"User","site_admin":false},"html_url":"https://github.com/moonmeister/rfcs","description":"RFCs for changes to Gatsby","fork":true,"url":"https://api.github.com/repos/moonmeister/rfcs","forks_url":"https://api.github.com/repos/moonmeister/rfcs/forks","keys_url":"https://api.github.com/repos/moonmeister/rfcs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/moonmeister/rfcs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/moonmeister/rfcs/teams","hooks_url":"https://api.github.com/repos/moonmeister/rfcs/hooks","issue_events_url":"https://api.github.com/repos/moonmeister/rfcs/issues/events{/number}","events_url":"https://api.github.com/repos/moonmeister/rfcs/events","assignees_url":"https://api.github.com/repos/moonmeister/rfcs/assignees{/user}","branches_url":"https://api.github.com/repos/moonmeister/rfcs/branches{/branch}","tags_url":"https://api.github.com/repos/moonmeister/rfcs/tags","blobs_url":"https://api.github.com/repos/moonmeister/rfcs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/moonmeister/rfcs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/moonmeister/rfcs/git/refs{/sha}","trees_url":"https://api.github.com/repos/moonmeister/rfcs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/moonmeister/rfcs/statuses/{sha}","languages_url":"https://api.github.com/repos/moonmeister/rfcs/languages","stargazers_url":"https://api.github.com/repos/moonmeister/rfcs/stargazers","contributors_url":"https://api.github.com/repos/moonmeister/rfcs/contributors","subscribers_url":"https://api.github.com/repos/moonmeister/rfcs/subscribers","subscription_url":"https://api.github.com/repos/moonmeister/rfcs/subscription","commits_url":"https://api.github.com/repos/moonmeister/rfcs/commits{/sha}","git_commits_url":"https://api.github.com/repos/moonmeister/rfcs/git/commits{/sha}","comments_url":"https://api.github.com/repos/moonmeister/rfcs/comments{/number}","issue_comment_url":"https://api.github.com/repos/moonmeister/rfcs/issues/comments{/number}","contents_url":"https://api.github.com/repos/moonmeister/rfcs/contents/{+path}","compare_url":"https://api.github.com/repos/moonmeister/rfcs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/moonmeister/rfcs/merges","archive_url":"https://api.github.com/repos/moonmeister/rfcs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/moonmeister/rfcs/downloads","issues_url":"https://api.github.com/repos/moonmeister/rfcs/issues{/number}","pulls_url":"https://api.github.com/repos/moonmeister/rfcs/pulls{/number}","milestones_url":"https://api.github.com/repos/moonmeister/rfcs/milestones{/number}","notifications_url":"https://api.github.com/repos/moonmeister/rfcs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/moonmeister/rfcs/labels{/name}","releases_url":"https://api.github.com/repos/moonmeister/rfcs/releases{/id}","deployments_url":"https://api.github.com/repos/moonmeister/rfcs/deployments","created_at":"2018-09-28T22:35:43Z","updated_at":"2018-09-28T22:35:45Z","pushed_at":"2018-09-30T01:30:46Z","git_url":"git://github.com/moonmeister/rfcs.git","ssh_url":"git@github.com:moonmeister/rfcs.git","clone_url":"https://github.com/moonmeister/rfcs.git","svn_url":"https://github.com/moonmeister/rfcs","homepage":null,"size":61,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"gatsbyjs:master","ref":"master","sha":"3bdcb6bc1873c9859b9f2cab78b3b7e396e22245","user":{"login":"gatsbyjs","id":12551863,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNTUxODYz","avatar_url":"https://avatars1.githubusercontent.com/u/12551863?v=4","gravatar_id":"","url":"https://api.github.com/users/gatsbyjs","html_url":"https://github.com/gatsbyjs","followers_url":"https://api.github.com/users/gatsbyjs/followers","following_url":"https://api.github.com/users/gatsbyjs/following{/other_user}","gists_url":"https://api.github.com/users/gatsbyjs/gists{/gist_id}","starred_url":"https://api.github.com/users/gatsbyjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gatsbyjs/subscriptions","organizations_url":"https://api.github.com/users/gatsbyjs/orgs","repos_url":"https://api.github.com/users/gatsbyjs/repos","events_url":"https://api.github.com/users/gatsbyjs/events{/privacy}","received_events_url":"https://api.github.com/users/gatsbyjs/received_events","type":"Organization","site_admin":false},"repo":{"id":125935951,"node_id":"MDEwOlJlcG9zaXRvcnkxMjU5MzU5NTE=","name":"rfcs","full_name":"gatsbyjs/rfcs","private":false,"owner":{"login":"gatsbyjs","id":12551863,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEyNTUxODYz","avatar_url":"https://avatars1.githubusercontent.com/u/12551863?v=4","gravatar_id":"","url":"https://api.github.com/users/gatsbyjs","html_url":"https://github.com/gatsbyjs","followers_url":"https://api.github.com/users/gatsbyjs/followers","following_url":"https://api.github.com/users/gatsbyjs/following{/other_user}","gists_url":"https://api.github.com/users/gatsbyjs/gists{/gist_id}","starred_url":"https://api.github.com/users/gatsbyjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gatsbyjs/subscriptions","organizations_url":"https://api.github.com/users/gatsbyjs/orgs","repos_url":"https://api.github.com/users/gatsbyjs/repos","events_url":"https://api.github.com/users/gatsbyjs/events{/privacy}","received_events_url":"https://api.github.com/users/gatsbyjs/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/gatsbyjs/rfcs","description":"RFCs for changes to Gatsby","fork":false,"url":"https://api.github.com/repos/gatsbyjs/rfcs","forks_url":"https://api.github.com/repos/gatsbyjs/rfcs/forks","keys_url":"https://api.github.com/repos/gatsbyjs/rfcs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gatsbyjs/rfcs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gatsbyjs/rfcs/teams","hooks_url":"https://api.github.com/repos/gatsbyjs/rfcs/hooks","issue_events_url":"https://api.github.com/repos/gatsbyjs/rfcs/issues/events{/number}","events_url":"https://api.github.com/repos/gatsbyjs/rfcs/events","assignees_url":"https://api.github.com/repos/gatsbyjs/rfcs/assignees{/user}","branches_url":"https://api.github.com/repos/gatsbyjs/rfcs/branches{/branch}","tags_url":"https://api.github.com/repos/gatsbyjs/rfcs/tags","blobs_url":"https://api.github.com/repos/gatsbyjs/rfcs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gatsbyjs/rfcs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gatsbyjs/rfcs/git/refs{/sha}","trees_url":"https://api.github.com/repos/gatsbyjs/rfcs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gatsbyjs/rfcs/statuses/{sha}","languages_url":"https://api.github.com/repos/gatsbyjs/rfcs/languages","stargazers_url":"https://api.github.com/repos/gatsbyjs/rfcs/stargazers","contributors_url":"https://api.github.com/repos/gatsbyjs/rfcs/contributors","subscribers_url":"https://api.github.com/repos/gatsbyjs/rfcs/subscribers","subscription_url":"https://api.github.com/repos/gatsbyjs/rfcs/subscription","commits_url":"https://api.github.com/repos/gatsbyjs/rfcs/commits{/sha}","git_commits_url":"https://api.github.com/repos/gatsbyjs/rfcs/git/commits{/sha}","comments_url":"https://api.github.com/repos/gatsbyjs/rfcs/comments{/number}","issue_comment_url":"https://api.github.com/repos/gatsbyjs/rfcs/issues/comments{/number}","contents_url":"https://api.github.com/repos/gatsbyjs/rfcs/contents/{+path}","compare_url":"https://api.github.com/repos/gatsbyjs/rfcs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gatsbyjs/rfcs/merges","archive_url":"https://api.github.com/repos/gatsbyjs/rfcs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gatsbyjs/rfcs/downloads","issues_url":"https://api.github.com/repos/gatsbyjs/rfcs/issues{/number}","pulls_url":"https://api.github.com/repos/gatsbyjs/rfcs/pulls{/number}","milestones_url":"https://api.github.com/repos/gatsbyjs/rfcs/milestones{/number}","notifications_url":"https://api.github.com/repos/gatsbyjs/rfcs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gatsbyjs/rfcs/labels{/name}","releases_url":"https://api.github.com/repos/gatsbyjs/rfcs/releases{/id}","deployments_url":"https://api.github.com/repos/gatsbyjs/rfcs/deployments","created_at":"2018-03-20T00:02:35Z","updated_at":"2018-09-29T00:44:33Z","pushed_at":"2018-09-30T01:30:48Z","git_url":"git://github.com/gatsbyjs/rfcs.git","ssh_url":"git@github.com:gatsbyjs/rfcs.git","clone_url":"https://github.com/gatsbyjs/rfcs.git","svn_url":"https://github.com/gatsbyjs/rfcs","homepage":null,"size":55,"stargazers_count":40,"watchers_count":40,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"archived":false,"open_issues_count":6,"license":null,"forks":9,"open_issues":6,"watchers":40,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/13"},"html":{"href":"https://github.com/gatsbyjs/rfcs/pull/13"},"issue":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/issues/13"},"comments":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/issues/13/comments"},"review_comments":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/13/comments"},"review_comment":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/pulls/13/commits"},"statuses":{"href":"https://api.github.com/repos/gatsbyjs/rfcs/statuses/55984e328404620d2d4d4d6c3c3598c8d53bf543"}},"author_association":"NONE"}}
{"actor":{"display_login":"jlengstorf"}}