{"action":"created","issue":{"url":"https://api.github.com/repos/gruntjs/grunt-contrib-uglify/issues/369","labels_url":"https://api.github.com/repos/gruntjs/grunt-contrib-uglify/issues/369/labels{/name}","comments_url":"https://api.github.com/repos/gruntjs/grunt-contrib-uglify/issues/369/comments","events_url":"https://api.github.com/repos/gruntjs/grunt-contrib-uglify/issues/369/events","html_url":"https://github.com/gruntjs/grunt-contrib-uglify/pull/369","id":116551849,"number":369,"title":"Do not use \"^\" versions, ever, use ~","user":{"login":"Rialgar","id":4598334,"avatar_url":"https://avatars.githubusercontent.com/u/4598334?v=3","gravatar_id":"","url":"https://api.github.com/users/Rialgar","html_url":"https://github.com/Rialgar","followers_url":"https://api.github.com/users/Rialgar/followers","following_url":"https://api.github.com/users/Rialgar/following{/other_user}","gists_url":"https://api.github.com/users/Rialgar/gists{/gist_id}","starred_url":"https://api.github.com/users/Rialgar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Rialgar/subscriptions","organizations_url":"https://api.github.com/users/Rialgar/orgs","repos_url":"https://api.github.com/users/Rialgar/repos","events_url":"https://api.github.com/users/Rialgar/events{/privacy}","received_events_url":"https://api.github.com/users/Rialgar/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-11-12T13:48:41Z","updated_at":"2015-11-12T15:55:23Z","closed_at":"2015-11-12T14:23:37Z","pull_request":{"url":"https://api.github.com/repos/gruntjs/grunt-contrib-uglify/pulls/369","html_url":"https://github.com/gruntjs/grunt-contrib-uglify/pull/369","diff_url":"https://github.com/gruntjs/grunt-contrib-uglify/pull/369.diff","patch_url":"https://github.com/gruntjs/grunt-contrib-uglify/pull/369.patch"},"body":"Today ugilfy.js 2.6.0 broke everything in our setup, we can not go back to an older version, because you specified ^2.5.0."},"comment":{"url":"https://api.github.com/repos/gruntjs/grunt-contrib-uglify/issues/comments/156146859","html_url":"https://github.com/gruntjs/grunt-contrib-uglify/pull/369#issuecomment-156146859","issue_url":"https://api.github.com/repos/gruntjs/grunt-contrib-uglify/issues/369","id":156146859,"user":{"login":"vladikoff","id":128755,"avatar_url":"https://avatars.githubusercontent.com/u/128755?v=3","gravatar_id":"","url":"https://api.github.com/users/vladikoff","html_url":"https://github.com/vladikoff","followers_url":"https://api.github.com/users/vladikoff/followers","following_url":"https://api.github.com/users/vladikoff/following{/other_user}","gists_url":"https://api.github.com/users/vladikoff/gists{/gist_id}","starred_url":"https://api.github.com/users/vladikoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vladikoff/subscriptions","organizations_url":"https://api.github.com/users/vladikoff/orgs","repos_url":"https://api.github.com/users/vladikoff/repos","events_url":"https://api.github.com/users/vladikoff/events{/privacy}","received_events_url":"https://api.github.com/users/vladikoff/received_events","type":"User","site_admin":false},"created_at":"2015-11-12T15:55:23Z","updated_at":"2015-11-12T15:55:23Z","body":"> Just because a single dependency does not respect semver, it does not mean that you have to lock down all other dependencies. I'd recommend using ~ for the problematic dependency (uglify-js) only.\r\n\r\nSame happened to less. If developers in charge of less and uglify-js do not respect semver I don't expect more from developers of less used libraries. \r\n\r\n> npm has chosen to change the default range operator from ~ to ^ for reasons. One of these reasons is the ability to pull in new features and bug fixes automatically when new minor versions are released.\r\n\r\nnpm makes decisions but they don't have to maintain production builds for dozens of projects where developers do not have time to deal with package manager issues.  \r\n\r\n> Bottom line is: don't try to subvert semver, there will always be breakage when semver is not respected. \r\n\r\nTrue, IMHO `~` is safest, also use `npm shrinkwrap` it is a pain to maintain but it saves you from these issues for packaged builds. \r\n\r\nTo make it safer for plugin users I suggest we keep `~` for now."}}