{"id":15007787,"url":"https://github.com/bahmutov/next-update-travis","last_synced_at":"2025-09-28T20:30:48.643Z","repository":{"id":65424460,"uuid":"95836568","full_name":"bahmutov/next-update-travis","owner":"bahmutov","description":"Safely update your NPM dependencies using TravisCI cron jobs","archived":false,"fork":false,"pushed_at":"2021-02-25T04:35:31.000Z","size":318,"stargazers_count":18,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-03T21:41:57.886Z","etag":null,"topics":["dependencies","next-update","npm","travis","travis-ci","travisci-cron-jobs","update","upload"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bahmutov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-30T01:47:45.000Z","updated_at":"2021-11-26T08:01:41.000Z","dependencies_parsed_at":"2023-01-23T01:45:27.470Z","dependency_job_id":null,"html_url":"https://github.com/bahmutov/next-update-travis","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bahmutov%2Fnext-update-travis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bahmutov%2Fnext-update-travis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bahmutov%2Fnext-update-travis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bahmutov%2Fnext-update-travis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bahmutov","download_url":"https://codeload.github.com/bahmutov/next-update-travis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234482941,"owners_count":18840354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependencies","next-update","npm","travis","travis-ci","travisci-cron-jobs","update","upload"],"created_at":"2024-09-24T19:13:51.778Z","updated_at":"2025-09-28T20:30:48.173Z","avatar_url":"https://github.com/bahmutov.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# next-update-travis\n\n[![next-update-travis badge][nut-badge]][nut-readme]\n\n\u003e Safely update your dependencies using TravisCI cron jobs\n\n[![NPM][npm-icon] ][npm-url]\n\n[![Build status][ci-image] ][ci-url]\n[![semantic-release][semantic-image] ][semantic-url]\n[![js-standard-style][standard-image]][standard-url]\n\n## Install\n\nRequires [Node](https://nodejs.org/en/) version 4 or above.\n\n```sh\nnpm install --save-dev next-update-travis\n```\n\nThis will create file `next-update-travis.sh` you can tweak. If you need to\nreinstall (because new version of `next-update-travis` is available), just\nremove the file and install again\n\n```sh\nrm next-update-travis.sh\nnpm i next-update-travis\n```\n\nIt is highly recommended to set up `next-update-travis` *after*\n[enabling semantic release][sem setup] on Travis CI.\n\n## Use\n\nTake any Node project and install `next-update-travis` as a dev dependency.\nThis will create a shell script file `next-update-travis.sh` in the project.\nAdd this script to your `.travis.yml` `script` step.\n\n```yaml\nscript:\n  - ./next-update-travis.sh\n  - npm test\n```\n\nThen enable a [cron job][cron job] on Travis. `next-update-travis.sh` skips\nrunning its command automatically for non-cron jobs.\n\n![Travis CI cron job](images/cron-job.png)\n\nThat's it.\n\n**Important**\n\nIf there are dependencies that the `next-update-travis.sh` could safely\nupgrade, it will commit and push the change back to GitHub using `GH_TOKEN`\nfor authentication. The simplest way to set this token is by using\n[semantic-release][semantic-release], see [it's setup][sem setup].\n\n[cron job]: https://docs.travis-ci.com/user/cron-jobs/\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[sem setup]: https://github.com/semantic-release/semantic-release#setup\n\nCron job will run, and if dependencies can be successfully upgraded, the\nupdate will be pushed (triggering normal Travis build). It will look\nsomething like this in the build history\n\n![Two successful upgrades](images/updated-deps-build-history.png)\n\n## Options\n\nYou can tweak which updates are checked by editing `next-update-travis.sh`\nscript. Under the hood it uses [next-update][next-update] to check dependencies.\nFor example, to only consider patches (fixes) you can modify the shell command\nto be\n\n```sh\nnext-update --allow patch\n```\n\n[next-update]: https://github.com/bahmutov/next-update\n\n## Badge\n\nLet other people know that your module is periodically updated with this\nMarkdown SVG badge [![next-update-travis badge][nut-badge]][nut-readme].\nYou can use \"daily\", \"weekly\" and \"monthly\" period (to match what you have\npicked as Travis Cron job frequency)\n\n```\n[![next-update-travis badge][nut-badge]][nut-readme]\n[nut-badge]: https://img.shields.io/badge/next--update--travis-weekly-green.svg\n[nut-readme]: https://github.com/bahmutov/next-update-travis#readme\n```\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003eWhy do you hate \u003ca href=\"https://greenkeeper.io/\"\u003egreenkeeper.io\u003c/a\u003e?\u003c/summary\u003e\n\u003cbr\u003e\nI ♥️ Greenkeeper! And I use \u003ca href=\"https://github.com/semantic-release/semantic-release\"\u003esemantic-release\u003c/a\u003e\non \u003cb\u003eevery single one\u003c/b\u003e of my NPM packages. But Greenkeeper is too scared to\nmerge suggested dependency updates, creating so many pull requests ...\nI want less noise and fully automated solution; with options to control which\nmodules are tested, how and the global update stats, I feel we finally can\ntake the human out of the loop.\n\u003chr\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWhat if my tests are not comprehensive enough to feel safe?\u003c/summary\u003e\n\u003cbr\u003e\nYou can control which modules \u003ca href=\"https://github.com/bahmutov/next-update#checking-specific-modules\"\u003eare checked\u003c/a\u003e or \u003ca href=\"https://github.com/bahmutov/next-update#ignoring-or-skipping-some-modules\"\u003eskipped\u003c/a\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\"npm test\" is not my testing command\u003c/summary\u003e\n\u003cbr\u003e\nYou can use a different command and even a custom command per module,\nsee \u003ca href=\"https://github.com/bahmutov/next-update#custom-test-command-per-module\"\u003edocs\u003c/a\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eI only want to test and update to dependencies that others have successfully tested\u003c/summary\u003e\n\u003cbr\u003e\n\u003ccode\u003enext-update\u003c/code\u003e uses public anonymous \u003ca href=\"https://github.com/bahmutov/next-update#anonymous-usage-collection\"\u003estatistics\u003c/a\u003e to show success\npercentage for each specific update.\nWhen \u003ca href=\"https://github.com/bahmutov/next-update/issues/107\"\u003ebahmutov/next-update#107\u003c/a\u003e is implemented\nit will be possible to automatically upgrade only the packages that were\nsuccessfully upgraded by others 100% of the time for example.\n\u003chr\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eHelp, it updated dependencies and published new broken version!\u003c/summary\u003e\n\u003cbr\u003e\nHmm, \u003ccode\u003enext-update-travis\u003c/code\u003e commits its change with\n\u003ccode\u003echore(deps): ...\u003c/code\u003e message,\nwhich should NOT publish new NPM version according to semantic versioning\nconvention. Well, the beauty of Git is that you can always roll back the\ncommit and then\n\u003ca href=\"https://github.com/bahmutov/next-update#ignoring-or-skipping-some-modules\"\u003eblacklist\u003c/a\u003e\nthe specific modules that are causing problems.\n\u003chr\u003e\n\u003c/details\u003e\n\n### Small print\n\nAuthor: Gleb Bahmutov \u0026lt;gleb.bahmutov@gmail.com\u0026gt; \u0026copy; 2017\n\n* [@bahmutov](https://twitter.com/bahmutov)\n* [glebbahmutov.com](https://glebbahmutov.com)\n* [blog](https://glebbahmutov.com/blog)\n\nLicense: MIT - do anything with the code, but don't blame me if it does not work.\n\nSupport: if you find any problems with this module, email / tweet /\n[open issue](https://github.com/bahmutov/next-update-travis/issues) on Github\n\n## MIT License\n\nCopyright (c) 2017 Gleb Bahmutov \u0026lt;gleb.bahmutov@gmail.com\u0026gt;\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\n[npm-icon]: https://nodei.co/npm/next-update-travis.svg?downloads=true\n[npm-url]: https://npmjs.org/package/next-update-travis\n[ci-image]: https://travis-ci.org/bahmutov/next-update-travis.svg?branch=master\n[ci-url]: https://travis-ci.org/bahmutov/next-update-travis\n[semantic-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-url]: https://github.com/semantic-release/semantic-release\n[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg\n[standard-url]: http://standardjs.com/\n\n[nut-badge]: https://img.shields.io/badge/next--update--travis-weekly-green.svg\n[nut-readme]: https://github.com/bahmutov/next-update-travis#readme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbahmutov%2Fnext-update-travis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbahmutov%2Fnext-update-travis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbahmutov%2Fnext-update-travis/lists"}