{"action":"created","comment":{"url":"https://api.github.com/repos/twbs/bootstrap/pulls/comments/96778941","pull_request_review_id":17371119,"id":96778941,"diff_hunk":"@@ -0,0 +1,29 @@\n+module.exports = {\n+  core: {\n+    options: {\n+      test() {\n+        return (!process.env.TWBS_TEST || process.env.TWBS_TEST === 'core') && process.env.TRAVIS_REPO_SLUG !==","path":"build/grunt/if.js","position":5,"original_position":5,"commit_id":"56cddadcc91da72f33883b61f79597aa4f3699f7","original_commit_id":"56cddadcc91da72f33883b61f79597aa4f3699f7","user":{"login":"houndci-bot","id":6697940,"avatar_url":"https://avatars.githubusercontent.com/u/6697940?v=3","gravatar_id":"","url":"https://api.github.com/users/houndci-bot","html_url":"https://github.com/houndci-bot","followers_url":"https://api.github.com/users/houndci-bot/followers","following_url":"https://api.github.com/users/houndci-bot/following{/other_user}","gists_url":"https://api.github.com/users/houndci-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/houndci-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/houndci-bot/subscriptions","organizations_url":"https://api.github.com/users/houndci-bot/orgs","repos_url":"https://api.github.com/users/houndci-bot/repos","events_url":"https://api.github.com/users/houndci-bot/events{/privacy}","received_events_url":"https://api.github.com/users/houndci-bot/received_events","type":"User","site_admin":false},"body":"Unexpected use of process.env  no-process-env<br>'process' is not defined       no-undef","created_at":"2017-01-19T02:05:26Z","updated_at":"2017-01-19T02:05:26Z","html_url":"https://github.com/twbs/bootstrap/pull/21777#discussion_r96778941","pull_request_url":"https://api.github.com/repos/twbs/bootstrap/pulls/21777","_links":{"self":{"href":"https://api.github.com/repos/twbs/bootstrap/pulls/comments/96778941"},"html":{"href":"https://github.com/twbs/bootstrap/pull/21777#discussion_r96778941"},"pull_request":{"href":"https://api.github.com/repos/twbs/bootstrap/pulls/21777"}}},"pull_request":{"url":"https://api.github.com/repos/twbs/bootstrap/pulls/21777","id":102188597,"html_url":"https://github.com/twbs/bootstrap/pull/21777","diff_url":"https://github.com/twbs/bootstrap/pull/21777.diff","patch_url":"https://github.com/twbs/bootstrap/pull/21777.patch","issue_url":"https://api.github.com/repos/twbs/bootstrap/issues/21777","number":21777,"state":"open","locked":false,"title":"Improve build tool to make it easier to maintain and more pleasant to use ","user":{"login":"vanduynslagerp","id":3250552,"avatar_url":"https://avatars.githubusercontent.com/u/3250552?v=3","gravatar_id":"","url":"https://api.github.com/users/vanduynslagerp","html_url":"https://github.com/vanduynslagerp","followers_url":"https://api.github.com/users/vanduynslagerp/followers","following_url":"https://api.github.com/users/vanduynslagerp/following{/other_user}","gists_url":"https://api.github.com/users/vanduynslagerp/gists{/gist_id}","starred_url":"https://api.github.com/users/vanduynslagerp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vanduynslagerp/subscriptions","organizations_url":"https://api.github.com/users/vanduynslagerp/orgs","repos_url":"https://api.github.com/users/vanduynslagerp/repos","events_url":"https://api.github.com/users/vanduynslagerp/events{/privacy}","received_events_url":"https://api.github.com/users/vanduynslagerp/received_events","type":"User","site_admin":false},"body":"Following #20332 I've spent some time trying to improve the build process by switching to npm scripts only. See [comment](https://github.com/twbs/bootstrap/pull/20332#issuecomment-273321645).\r\nMy analysis is that npm scripts, while looking incredibly simple in theory, present several constraints and that the [problems](https://github.com/twbs/bootstrap/pull/20332#issue-166660947) of the build tool are not necessarly related to the tools but mostly the way tasks are organized and orchestrated.\r\n\r\nSo I decided to evaluate a solution that would make the build tool simpler to use, easier to maintain, robust and more importantly pleasant to use for developers, while building as much as possible on the existing that works.\r\n\r\nIt turns out it was not that hard and really fun to do :-), so after a couple hours the evaluation turned something that was almost there. So I decided to polish it, update the doc and propose a PR so anyone can can have a look.\r\nImage speak more than words so this is what I have now:\r\n\r\n![bootstrap-new-build](https://cloud.githubusercontent.com/assets/3250552/22090498/088ea312-ddc0-11e6-8ab5-af5c51b4dd26.gif)\r\n\r\nHere is the improvement that this PR brings.\r\n\r\n#### Easy setup\r\n`npm install` and that's it.\r\n\r\n#### Simple to use\r\nOnly 3 commands for the user/developer:\r\n- `dist`: build JS, CSS and Docs.\r\n- `test`: build JS, CSS, Docs, test and lint.\r\n- `watch`: Start everything to dev efficiently.\r\n\r\nOnly 4 commands for the maintainer:\r\n- `prep-release`: prepare release.\r\n- `publish`: publish doc on GitHub.\r\n- `change-version`: update version in source files.\r\n- `update-shrinkwrap`: update shrinkwrap dependencies management.\r\n\r\n#### Pleasant to develop with\r\n`npm run watch`, Open your browser and voila! All changes in scss, js and docs are automatically reflected in live on the local doc website. See gif above :)\r\n\r\n#### Fast\r\n- `build` runs in **6s** (it used to 24s)\r\n- `test` runs in **20s**\r\n- `watch` react to a modification os js, scss or docs, handle everything\r\n and reload the docs on the browser **in about 1s** (it used to be up to 10s just for sass + time for Jekyll to process the change)\r\n\r\n#### Easier to maintain\r\n- `Gruntfile` is now **10 line of code** and should't have to modified anymore.\r\n- For **each task there is a short config file** under `build/grunt`.\r\n- Grunt tasks have been reorganized in a more logical way and can be found in `build/grunt/aliases.yaml`.\r\n- **No more custom JS script**.\r\n- **No more Javascript function** here and there (like in current `Gruntfile,js`).\r\n- Most of the Javascript code has been eliminated. Only the meaningful configuration remains in `build/grunt` and `build/grunt/aliases.yaml` and is  written in a more declarative way than it would in an npm script.\r\n\r\n#### Stable\r\n- Most of the individual tasks are the one Bootstrap has been running for a while now, so that limit the risk of regression.\r\n- All the Grunt plugins are reliable maintained plugins (often more up to date than the npm cli equivalent).\r\n\r\n#### How do I use it?\r\n- `git clone -b build-rework https://github.com/vanduynslagerp/bootstrap`\r\n- `cd bootstrap`\r\n- `npm install`\r\n- `npm run watch`\r\n- Open you browser to [localhost:9001](localhost:9001)\r\n- Start coding! Each modification is applied within 1s and the doc website is reloaded automatically. Just code and watch the result live.\r\n\r\nI understand the Bootstrap team, like many others, seems to desire to move to pure npm scripts. That said, I think I reached a pretty satisfying result, that worth to be evaluated, which is the point of this PR.","created_at":"2017-01-19T02:05:05Z","updated_at":"2017-01-19T02:05:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d4fa4c3953a1efb1aeefb0d27a3e0bc4fe451c09","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/twbs/bootstrap/pulls/21777/commits","review_comments_url":"https://api.github.com/repos/twbs/bootstrap/pulls/21777/comments","review_comment_url":"https://api.github.com/repos/twbs/bootstrap/pulls/comments{/number}","comments_url":"https://api.github.com/repos/twbs/bootstrap/issues/21777/comments","statuses_url":"https://api.github.com/repos/twbs/bootstrap/statuses/56cddadcc91da72f33883b61f79597aa4f3699f7","head":{"label":"vanduynslagerp:build-rework","ref":"build-rework","sha":"56cddadcc91da72f33883b61f79597aa4f3699f7","user":{"login":"vanduynslagerp","id":3250552,"avatar_url":"https://avatars.githubusercontent.com/u/3250552?v=3","gravatar_id":"","url":"https://api.github.com/users/vanduynslagerp","html_url":"https://github.com/vanduynslagerp","followers_url":"https://api.github.com/users/vanduynslagerp/followers","following_url":"https://api.github.com/users/vanduynslagerp/following{/other_user}","gists_url":"https://api.github.com/users/vanduynslagerp/gists{/gist_id}","starred_url":"https://api.github.com/users/vanduynslagerp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vanduynslagerp/subscriptions","organizations_url":"https://api.github.com/users/vanduynslagerp/orgs","repos_url":"https://api.github.com/users/vanduynslagerp/repos","events_url":"https://api.github.com/users/vanduynslagerp/events{/privacy}","received_events_url":"https://api.github.com/users/vanduynslagerp/received_events","type":"User","site_admin":false},"repo":{"id":59397841,"name":"bootstrap","full_name":"vanduynslagerp/bootstrap","owner":{"login":"vanduynslagerp","id":3250552,"avatar_url":"https://avatars.githubusercontent.com/u/3250552?v=3","gravatar_id":"","url":"https://api.github.com/users/vanduynslagerp","html_url":"https://github.com/vanduynslagerp","followers_url":"https://api.github.com/users/vanduynslagerp/followers","following_url":"https://api.github.com/users/vanduynslagerp/following{/other_user}","gists_url":"https://api.github.com/users/vanduynslagerp/gists{/gist_id}","starred_url":"https://api.github.com/users/vanduynslagerp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vanduynslagerp/subscriptions","organizations_url":"https://api.github.com/users/vanduynslagerp/orgs","repos_url":"https://api.github.com/users/vanduynslagerp/repos","events_url":"https://api.github.com/users/vanduynslagerp/events{/privacy}","received_events_url":"https://api.github.com/users/vanduynslagerp/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/vanduynslagerp/bootstrap","description":"The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web.","fork":true,"url":"https://api.github.com/repos/vanduynslagerp/bootstrap","forks_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/forks","keys_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/teams","hooks_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/hooks","issue_events_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/issues/events{/number}","events_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/events","assignees_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/assignees{/user}","branches_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/branches{/branch}","tags_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/tags","blobs_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/git/refs{/sha}","trees_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/statuses/{sha}","languages_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/languages","stargazers_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/stargazers","contributors_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/contributors","subscribers_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/subscribers","subscription_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/subscription","commits_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/commits{/sha}","git_commits_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/git/commits{/sha}","comments_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/comments{/number}","issue_comment_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/issues/comments{/number}","contents_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/contents/{+path}","compare_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/merges","archive_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/downloads","issues_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/issues{/number}","pulls_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/pulls{/number}","milestones_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/milestones{/number}","notifications_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/labels{/name}","releases_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/releases{/id}","deployments_url":"https://api.github.com/repos/vanduynslagerp/bootstrap/deployments","created_at":"2016-05-22T06:10:13Z","updated_at":"2017-01-17T23:15:29Z","pushed_at":"2017-01-19T01:51:20Z","git_url":"git://github.com/vanduynslagerp/bootstrap.git","ssh_url":"git@github.com:vanduynslagerp/bootstrap.git","clone_url":"https://github.com/vanduynslagerp/bootstrap.git","svn_url":"https://github.com/vanduynslagerp/bootstrap","homepage":"http://getbootstrap.com","size":95004,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"v4-dev"}},"base":{"label":"twbs:v4-dev","ref":"v4-dev","sha":"80058b233ee69ec27be1ebb8b07957ec8e38cec2","user":{"login":"twbs","id":2918581,"avatar_url":"https://avatars.githubusercontent.com/u/2918581?v=3","gravatar_id":"","url":"https://api.github.com/users/twbs","html_url":"https://github.com/twbs","followers_url":"https://api.github.com/users/twbs/followers","following_url":"https://api.github.com/users/twbs/following{/other_user}","gists_url":"https://api.github.com/users/twbs/gists{/gist_id}","starred_url":"https://api.github.com/users/twbs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twbs/subscriptions","organizations_url":"https://api.github.com/users/twbs/orgs","repos_url":"https://api.github.com/users/twbs/repos","events_url":"https://api.github.com/users/twbs/events{/privacy}","received_events_url":"https://api.github.com/users/twbs/received_events","type":"Organization","site_admin":false},"repo":{"id":2126244,"name":"bootstrap","full_name":"twbs/bootstrap","owner":{"login":"twbs","id":2918581,"avatar_url":"https://avatars.githubusercontent.com/u/2918581?v=3","gravatar_id":"","url":"https://api.github.com/users/twbs","html_url":"https://github.com/twbs","followers_url":"https://api.github.com/users/twbs/followers","following_url":"https://api.github.com/users/twbs/following{/other_user}","gists_url":"https://api.github.com/users/twbs/gists{/gist_id}","starred_url":"https://api.github.com/users/twbs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twbs/subscriptions","organizations_url":"https://api.github.com/users/twbs/orgs","repos_url":"https://api.github.com/users/twbs/repos","events_url":"https://api.github.com/users/twbs/events{/privacy}","received_events_url":"https://api.github.com/users/twbs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/twbs/bootstrap","description":"The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web.","fork":false,"url":"https://api.github.com/repos/twbs/bootstrap","forks_url":"https://api.github.com/repos/twbs/bootstrap/forks","keys_url":"https://api.github.com/repos/twbs/bootstrap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/twbs/bootstrap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/twbs/bootstrap/teams","hooks_url":"https://api.github.com/repos/twbs/bootstrap/hooks","issue_events_url":"https://api.github.com/repos/twbs/bootstrap/issues/events{/number}","events_url":"https://api.github.com/repos/twbs/bootstrap/events","assignees_url":"https://api.github.com/repos/twbs/bootstrap/assignees{/user}","branches_url":"https://api.github.com/repos/twbs/bootstrap/branches{/branch}","tags_url":"https://api.github.com/repos/twbs/bootstrap/tags","blobs_url":"https://api.github.com/repos/twbs/bootstrap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/twbs/bootstrap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/twbs/bootstrap/git/refs{/sha}","trees_url":"https://api.github.com/repos/twbs/bootstrap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/twbs/bootstrap/statuses/{sha}","languages_url":"https://api.github.com/repos/twbs/bootstrap/languages","stargazers_url":"https://api.github.com/repos/twbs/bootstrap/stargazers","contributors_url":"https://api.github.com/repos/twbs/bootstrap/contributors","subscribers_url":"https://api.github.com/repos/twbs/bootstrap/subscribers","subscription_url":"https://api.github.com/repos/twbs/bootstrap/subscription","commits_url":"https://api.github.com/repos/twbs/bootstrap/commits{/sha}","git_commits_url":"https://api.github.com/repos/twbs/bootstrap/git/commits{/sha}","comments_url":"https://api.github.com/repos/twbs/bootstrap/comments{/number}","issue_comment_url":"https://api.github.com/repos/twbs/bootstrap/issues/comments{/number}","contents_url":"https://api.github.com/repos/twbs/bootstrap/contents/{+path}","compare_url":"https://api.github.com/repos/twbs/bootstrap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/twbs/bootstrap/merges","archive_url":"https://api.github.com/repos/twbs/bootstrap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/twbs/bootstrap/downloads","issues_url":"https://api.github.com/repos/twbs/bootstrap/issues{/number}","pulls_url":"https://api.github.com/repos/twbs/bootstrap/pulls{/number}","milestones_url":"https://api.github.com/repos/twbs/bootstrap/milestones{/number}","notifications_url":"https://api.github.com/repos/twbs/bootstrap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/twbs/bootstrap/labels{/name}","releases_url":"https://api.github.com/repos/twbs/bootstrap/releases{/id}","deployments_url":"https://api.github.com/repos/twbs/bootstrap/deployments","created_at":"2011-07-29T21:19:00Z","updated_at":"2017-01-19T01:34:19Z","pushed_at":"2017-01-19T02:05:07Z","git_url":"git://github.com/twbs/bootstrap.git","ssh_url":"git@github.com:twbs/bootstrap.git","clone_url":"https://github.com/twbs/bootstrap.git","svn_url":"https://github.com/twbs/bootstrap","homepage":"http://getbootstrap.com","size":95598,"stargazers_count":105861,"watchers_count":105861,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":48121,"mirror_url":null,"open_issues_count":306,"forks":48121,"open_issues":306,"watchers":105861,"default_branch":"v4-dev"}},"_links":{"self":{"href":"https://api.github.com/repos/twbs/bootstrap/pulls/21777"},"html":{"href":"https://github.com/twbs/bootstrap/pull/21777"},"issue":{"href":"https://api.github.com/repos/twbs/bootstrap/issues/21777"},"comments":{"href":"https://api.github.com/repos/twbs/bootstrap/issues/21777/comments"},"review_comments":{"href":"https://api.github.com/repos/twbs/bootstrap/pulls/21777/comments"},"review_comment":{"href":"https://api.github.com/repos/twbs/bootstrap/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/twbs/bootstrap/pulls/21777/commits"},"statuses":{"href":"https://api.github.com/repos/twbs/bootstrap/statuses/56cddadcc91da72f33883b61f79597aa4f3699f7"}}}}
{"actor":{"display_login":"houndci-bot"}}