{"id":19556345,"url":"https://github.com/fiverr/published","last_synced_at":"2025-08-01T19:04:34.511Z","repository":{"id":51401728,"uuid":"120199708","full_name":"fiverr/published","owner":"fiverr","description":"📦 Opinionated NPM publish program","archived":false,"fork":false,"pushed_at":"2024-03-28T10:39:19.000Z","size":153,"stargazers_count":8,"open_issues_count":3,"forks_count":3,"subscribers_count":61,"default_branch":"master","last_synced_at":"2025-06-03T14:54:21.114Z","etag":null,"topics":["automation","ci-cd","cli","npm","npx","publish"],"latest_commit_sha":null,"homepage":"https://published.js.org/","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/fiverr.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2018-02-04T15:59:52.000Z","updated_at":"2023-12-19T17:41:34.000Z","dependencies_parsed_at":"2024-03-28T11:46:33.383Z","dependency_job_id":"6d71da80-aafe-46b2-b4c7-76f3c360efee","html_url":"https://github.com/fiverr/published","commit_stats":{"total_commits":72,"total_committers":6,"mean_commits":12.0,"dds":0.3472222222222222,"last_synced_commit":"42a80617f050dbe3f24b89d9cfff9ef0e2435639"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/fiverr/published","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverr%2Fpublished","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverr%2Fpublished/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverr%2Fpublished/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverr%2Fpublished/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fiverr","download_url":"https://codeload.github.com/fiverr/published/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fiverr%2Fpublished/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268281521,"owners_count":24225157,"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","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-cd","cli","npm","npx","publish"],"created_at":"2024-11-11T04:37:37.649Z","updated_at":"2025-08-01T19:04:34.462Z","avatar_url":"https://github.com/fiverr.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# published [![](https://img.shields.io/badge/source--000000.svg?logo=github\u0026style=social)](https://github.com/fiverr/published) [![](https://img.shields.io/npm/v/published.svg)](https://www.npmjs.com/package/published) [![](https://circleci.com/gh/fiverr/published.svg?style=svg\u0026circle-token=c887f45cd0a168ce3a1a304923f92bff11cccd81)](https://circleci.com/gh/fiverr/workflows/published/tree/master)\n\n## 📦 Opinionated NPM publish program \u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"20 20 60 60\" width=\"100\" height=\"100\" style=\"display:block; margin:0 auto\"\u003e\u003cellipse cx=\"40.625\" cy=\"55.678\" rx=\"1.875\" ry=\"2.812\"/\u003e\u003cellipse cx=\"59.375\" cy=\"55.678\" rx=\"1.875\" ry=\"2.812\"/\u003e\u003cpath d=\"M57.5 65.053h-15a.937.937 0 1 0 0 1.876h15a.937.937 0 1 0 0-1.876z\"/\u003e\u003cpath d=\"M75.312 42.687v-.011c0-.048-.021-.092-.027-.137-.011-.072-.011-.145-.04-.214L69.51 28.143c-.002-.002-.004-.003-.004-.005a.923.923 0 0 0-.687-.544c-.057-.013-.111-.035-.17-.035l-.009-.002H31.359l-.011.002c-.044 0-.084.019-.126.025a.935.935 0 0 0-.729.553c0 .002-.002.003-.004.005l-5.735 14.182c-.027.069-.029.139-.038.209-.009.049-.029.091-.029.143v31.7c0 .518.419.938.938.938h48.75a.937.937 0 0 0 .938-.938V42.694l-.001-.007zm-25.015 2.122c-.037-.013-.075-.005-.112-.013a.777.777 0 0 0-.363-.001c-.038.007-.078.001-.119.015l-3.066 1.023v-2.219h6.727v2.219l-3.067-1.024zM31.993 29.432h14.104l-1.23 12.307h-17.85l4.976-12.307zm17.069 12.306H46.75l1.23-12.307h1.082v12.307zm1.876-12.306h1.082l1.23 12.307h-2.312V29.432zm4.195 12.306l-1.23-12.307h14.104l4.977 12.307H55.133zm18.305 31.7H26.562V43.613h18.199v3.52c0 .051.02.095.029.143.007.051.002.103.018.154.004.009.014.013.017.022.061.165.167.3.303.406.027.022.053.037.084.057a.923.923 0 0 0 .487.156.926.926 0 0 0 .296-.048L50 46.688l4.005 1.335a.926.926 0 0 0 .296.048.908.908 0 0 0 .487-.156c.031-.02.057-.035.084-.057a.915.915 0 0 0 .303-.406c.003-.009.013-.013.017-.022.016-.051.011-.103.018-.154.01-.048.029-.092.029-.143v-3.52h18.199v29.825z\"/\u003e\u003c/svg\u003e\n\npublished helps streamline a git based workflow with package publishing through continues delivery. Developers control their branch and version strategies, and published takes care of logical conditioning of when to publish stable versions and/or release candidates.\n\n### Run without installation\n```sh\nnpx published@1\n```\nOR\n```sh\nnpm exec published@1 --yes\n```\n\n### Options\n\n| option | Description | Example\n| - | - | -\n| testing | Dry run | `npm exec published --yes -- --testing`\n| slack.webhook | Notify on Slack | `npm exec published --yes -- --slack.webhook $SLACK_WEBHOOK`\n| slack.channel | Change Slack webhook channel | `npm exec published --yes -- --slack.webhook $SLACK_WEBHOOK --slack.channel \"#publish\"`\n| quiet | Silent outputs and notifications | `npm exec published --yes -- --quiet`\n| git-tag | Push a tag to git, Only from `master`(latest-branch) or `latest` branch | `npm exec published --yes -- --git-tag`\n| prefix-git-tag | Choose a prefix that will be prepend to git tag. Only from `master`(latest-branch) or `latest` branch | `npm exec published --yes -- --git-tag --prefix-git-tag=my-prefix@`\n| on-publish | Execute shell command after a publish event | `npm exec published --yes -- --on-publish bash\\ ./do-more.sh`\n| on-\u0026lt;tag\u0026gt; | Execute shell command after a publish event with this tag (executes after on-publish) | `npm exec published --yes -- --on-latest 'echo \"Published!\"'`\n| latest-branch | Branch that is considered latest (default is 'master') | `npm exec published --yes -- --latest-branch stable`\n| tag-name | Tag name to be used regardless of config. If performed from a branch other than `master`, needs to be used in conjunction with `latest-branch` option | `npm exec published --yes -- --tag-name next --latest-branch next`\n| no-sha | Disables the commit's SHA suffix for RC versions | `npm exec published --yes -- --no-sha`\n\n## TL;DR\n| Branch type | action |\n| --- | --- |\n| **Feature branch** | Release RC versions on tag by branch name. |\n| **Master (latest) branch** | Release clean semver on \"latest\" tag. |\n\n\u003cdetails\u003e\n\u003csummary\u003eNPM Permissions\u003c/summary\u003e\nIn order to publish an NPM package as a privileged user, create an NPM configuration file. One way to do it is to hide the token in an environment variable and add this preceding step:\n\n```sh\necho \"//registry.npmjs.org/:_authToken=$NPM_TOKEN\" \u003e\u003e ~/.npmrc\n```\n\u003c/details\u003e\n\n## Flow\n\n#### Feature branch\n\n- Publish only versions with a pre-release section containing `rc` string\n- Unless the `--no-sha` flag was passed, branch versions get a suffix that matches the commit ID, so you can re install the same tag and get updates\n- Tags are named after the branch name\n\n#### \"master\" branch\n\n- Only publish clean semver versions, no pre-release\n- Publish versions to tag \"latest\" (or publishConfig.tag from package.json)\n\n\u003e \\* using `latest-branch` option will switch its behaviour with master\n\n#### \"latest\" branch\n- Same as master, but will ignore publishConfig.tag setting.\u003cbr\u003eUse this if your master branch points to \"next\" through publishConfig.tag\n\n### Examples\n\n| branch | version | publish | tag | w/o sha\n| - | - | - | - | -\n| `my_feature_branch`, `next` | `1.3.0` | nothing | N/A | -\n| `my_feature_branch`, `next` | `1.3.1-alpha` | nothing | N/A | -\n| `my_feature_branch`, `next` | `1.3.1-rc` | `1.3.1-rc` | `my_feature_branch`, `next` | ✓\n| `my_feature_branch`, `next` | `1.3.1-rc.1` | `1.3.1-rc.1` | `my_feature_branch`, `next` | ✓\n| `my_feature_branch`, `next` | `1.3.1-rc` | `1.3.1-rc-c447f6a` | `my_feature_branch`, `next` | ✕\n| `my_feature_branch`, `next` | `1.3.1-rc.1` | `1.3.1-rc.1-c447f6a` | `my_feature_branch`, `next` | ✕\n| `master`, `latest` | `1.3.0` | `1.3.0` | `latest` | -\n| `master`, `latest` | `1.3.0-beta` | Throws Error | N/A | -\n| `master`, `latest` | `1.3.0-rc` | Throws Error | N/A | -\n\n\u003e \\* using `latest-branch` option will switch its behaviour with master\n\nPackage icon by Julien Deveaux from the Noun Project\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiverr%2Fpublished","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffiverr%2Fpublished","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiverr%2Fpublished/lists"}