{"id":13451801,"url":"https://github.com/algolia/shipjs","last_synced_at":"2025-05-14T05:02:32.967Z","repository":{"id":37492978,"uuid":"195665050","full_name":"algolia/shipjs","owner":"algolia","description":"Take control of what is going to be your next release.","archived":false,"fork":false,"pushed_at":"2024-12-24T09:10:11.000Z","size":13513,"stargazers_count":766,"open_issues_count":18,"forks_count":29,"subscribers_count":57,"default_branch":"main","last_synced_at":"2025-05-07T16:12:24.435Z","etag":null,"topics":["automation","ci","conventional-changelog","conventional-commits","github","process","release","semantic","semver","versioning"],"latest_commit_sha":null,"homepage":"https://community.algolia.com/shipjs/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/algolia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-07T15:06:52.000Z","updated_at":"2025-03-11T08:05:34.000Z","dependencies_parsed_at":"2024-02-04T07:47:49.969Z","dependency_job_id":"e7304a86-fd14-4636-b557-2abf743f45e7","html_url":"https://github.com/algolia/shipjs","commit_stats":{"total_commits":764,"total_committers":27,"mean_commits":"28.296296296296298","dds":0.5510471204188482,"last_synced_commit":"fdc63355331eaad4e691685b57d55fb1be7b55e6"},"previous_names":[],"tags_count":80,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algolia%2Fshipjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algolia%2Fshipjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algolia%2Fshipjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/algolia%2Fshipjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/algolia","download_url":"https://codeload.github.com/algolia/shipjs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253166496,"owners_count":21864483,"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":["automation","ci","conventional-changelog","conventional-commits","github","process","release","semantic","semver","versioning"],"created_at":"2024-07-31T07:01:03.016Z","updated_at":"2025-05-14T05:02:32.921Z","avatar_url":"https://github.com/algolia.png","language":"JavaScript","readme":"\u003ch1 align=\"center\"\u003e🛳 Ship.js\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"http://npmjs.com/package/shipjs\"\u003e\u003cimg alt=\"npm\" src=\"https://img.shields.io/npm/v/shipjs\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://circleci.com/gh/algolia/shipjs\"\u003e\u003cimg alt=\"CircleCI\" src=\"https://img.shields.io/circleci/build/gh/algolia/shipjs\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/algolia/shipjs/blob/master/LICENSE\"\u003e\u003cimg alt=\"NPM\" src=\"https://img.shields.io/npm/l/shipjs\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/algolia/shipjs#contributors-\"\u003e\u003cimg alt=\"All Contributors\" src=\"https://img.shields.io/badge/all_contributors-13-orange.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://join.slack.com/t/shipjs/shared_invite/enQtODc3OTc3NjQ0NDg3LTU3ZDgyMzlkNzY2YTMxMGQ1MzE3OGMzZjMzYjU5Y2NmZDQ5Mzk1ZWUxZjk3NWFjMDIwYmI0ZGUyY2E2YTZkYzk\"\u003e\u003cimg alt=\"Chat on Slack\" src=\"https://img.shields.io/badge/chat-on%20Slack-orange\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Take control of what is going to be your next release.\u003cbr\u003e\n  \u003ca href=\"https://community.algolia.com/shipjs/\"\u003ehttps://community.algolia.com/shipjs/\u003c/a\u003e\n\u003c/p\u003e\n\n## Features\n\n- Automated\n  - Minimize your effort for release and make less mistakes.\n- Asynchronous\n  - You don't have to release on your local machine. Do it asynchronously and continue your work.\n- Collaborative\n  - Don't sweat it alone. Review the next release on pull request with your colleagues.\n\n## Installation\n\nRunning the following command will guide you to set it up interactively.\n\n```bash\nnpx shipjs setup\n```\n\nThis interactive CLI will help you install Ship.js into your package and create a tailored config file for your project.\n\n![npx shipjs setup](./website/guide/setup.png)\n\n## Why 🤷🏻‍\n\nCoding is fun, debugging and testing are okay, but releasing is NOT.\n\nWhen releasing, you go through something like the following:\n\n- Update the version in `package.json`\n- Update the changelog\n- Actually release it (e.g. `npm run build \u0026\u0026 npm publish`)\n- Create a git tag\n- Create a release on GitHub\n\n### What could go wrong?\n\n- You might make mistakes during the release.\n  - Environments are different across your team members.\n  - You're releasing alone because the whole process happens on your local machine.\n  - It's not your everyday-job. Mistakes can happen.\n- You are blocked and cannot do anything else until it's done.\n  - Even if you have a release script, you need to watch until the script finishes well.\n  - You don't want to switch to another feature branch and work there until the script finishes.\n\n## How to solve them❓\n\nIn Ship.js, the release process consists of three parts.\n\n### Part 1. Preparation (`shipjs prepare`)\n\n![Preview](./website/guide/preview.gif)\n\nRun `shipjs prepare` and it will briefly do the following:\n\n- Figure out next version.\n- Update the version and changelog.\n- Create a pull request.\n\nIt takes less than a couple of minutes.\n\n### Part 2. Review\n\n- Review the PR by yourself, or with your colleagues.\n- Add more commits to the PR if you want.\n- You can hold the release, build from the staging branch and test it manually.\n- If you want to cancel the release, just close the PR and delete the staging branch.\n\nWhen you think it's ready to release, merge the PR.\n\n### Part 3. Trigger a release (`shipjs trigger`)\n\nRun `shipjs trigger` and it will briefly do the following:\n\n- Run a final test (unit, e2e, etc).\n- Release it to NPM (or elsewhere as you configure it).\n- Create a git tag for the version.\n- Create a release for the tag on GitHub.\n\nYou can manually run `shipjs trigger` on the base branch after the PR is merged.\n\nHowever you can also configure your CI service(e.g. CircleCI) to do this for you. It means the longest process is on the CI service asynchronously, not occupying your working environment.\n\n## Getting Started\n\nLet's move on to the [guide](https://community.algolia.com/shipjs/guide/getting-started.html).\n\nOr, you can watch this video if you prefer.\n\n[![Getting Started with Ship.js](https://img.youtube.com/vi/FPj7urChN_E/0.jpg)](https://www.youtube.com/watch?v=FPj7urChN_E)\n\n## How is it different from semantic-release?\n\n**semantic-release** is a tool for `fully automated version management and package publishing`.\n\nShip.js gives you more control over the release process. Ship.js automatically creates a PR before publishing every release, so that you can:\n\n- Confirm the next version is correct.\n- Confirm which commits are going to be released and discuss them with colleagues.\n- Edit the automatically generated changelog for clarity \u0026 readability.\n- Run any automated tests on the package release candidate.\n- Build a release candidate automatically (with [Pika CI](https://github.com/marketplace/pika-ci-cd) or [CodeSandbox](https://github.com/apps/codesandbox)).\n\n## How to Contribute?\n\n[Read Contribution Guide →](https://community.algolia.com/shipjs/guide/contributing.html)\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://twitter.com/eunjae_lee\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/499898?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEunjae Lee\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=eunjae-lee\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/algolia/shipjs/commits?author=eunjae-lee\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.fredkschott.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/622227?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFred K. Schott\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=FredKSchott\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://uechi.io\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/431808?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eYasuaki Uechi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=uetchy\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/algolia/shipjs/commits?author=uetchy\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://jeetiss.github.io/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/6726016?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDmitry Ivakhnenko\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=jeetiss\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/algolia/shipjs/commits?author=jeetiss\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://ghuser.io/jamesgeorge007\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/25279263?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJames George\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=jamesgeorge007\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/algolia/shipjs/commits?author=jamesgeorge007\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.patreon.com/kazupon\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/72989?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ekazuya kawaguchi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=kazupon\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#blog-kazupon\" title=\"Blogposts\"\u003e📝\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://tyankatsu.netlify.com/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/28397593?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003etyankatsu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=tyankatsu0105\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/algolia/shipjs/commits?author=tyankatsu0105\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://haroen.me\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6270048?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHaroen Viaene\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=Haroenv\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/heavenshell\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/56591?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eShinya Ohyanagi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=heavenshell\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://donghoon-song.github.io\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/32301380?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDonghoon Song\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=donghoon-song\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/miyajan\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/945853?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMiyata Jumpei\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=miyajan\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://riotz.works\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/31102213?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003elulzneko\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=lulzneko\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/algolia/shipjs/commits?author=lulzneko\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://vinayakkulkarni.dev\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/19776877?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVinayak Kulkarni\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/algolia/shipjs/commits?author=vinayakkulkarni\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n## Badge [![deploy](https://img.shields.io/badge/deploy-🛳%20Ship.js-blue?style=flat)](https://github.com/algolia/shipjs)\n\nShow the world you're using Ship.js\n\n```md\n[![deploy](https://img.shields.io/badge/deploy-🛳%20Ship.js-blue?style=flat)](https://github.com/algolia/shipjs)\n```\n\n```html\n\u003ca title=\"deploy\" href=\"https://github.com/algolia/shipjs\" rel=\"nofollow\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/deploy-🛳%20Ship.js-blue?style=flat\" /\u003e\n\u003c/a\u003e\n```\n","funding_links":["https://www.patreon.com/kazupon"],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falgolia%2Fshipjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falgolia%2Fshipjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falgolia%2Fshipjs/lists"}