{"id":20018330,"url":"https://github.com/varletjs/varlet-release","last_synced_at":"2026-04-14T07:06:43.306Z","repository":{"id":207127712,"uuid":"718471703","full_name":"varletjs/varlet-release","owner":"varletjs","description":"Release all package, generate changelogs and lint commit message.","archived":false,"fork":false,"pushed_at":"2026-04-09T13:04:31.000Z","size":676,"stargazers_count":6,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-09T13:04:49.472Z","etag":null,"topics":["changelog","commitlint","release","varlet"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/varletjs.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-14T06:29:32.000Z","updated_at":"2026-04-09T09:27:07.000Z","dependencies_parsed_at":"2024-01-22T09:45:11.549Z","dependency_job_id":"09d9fc8f-ac63-43b7-a7ae-9f11b21836e9","html_url":"https://github.com/varletjs/varlet-release","commit_stats":null,"previous_names":["varletjs/release","varletjs/varlet-release"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/varletjs/varlet-release","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varletjs%2Fvarlet-release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varletjs%2Fvarlet-release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varletjs%2Fvarlet-release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varletjs%2Fvarlet-release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/varletjs","download_url":"https://codeload.github.com/varletjs/varlet-release/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varletjs%2Fvarlet-release/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31785685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["changelog","commitlint","release","varlet"],"created_at":"2024-11-13T08:21:28.018Z","updated_at":"2026-04-14T07:06:43.301Z","avatar_url":"https://github.com/varletjs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eVarlet Release\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cspan\u003eEnglish\u003c/span\u003e | \n  \u003ca href=\"https://github.com/varletjs/release/blob/main/README.zh-CN.md\"\u003e中文\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@varlet/release\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg src=\"https://badgen.net/npm/v/@varlet/release\" alt=\"NPM Version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/varletjs/release/blob/main/LICENSE\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg src=\"https://badgen.net/github/license/varletjs/release\" alt=\"License\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Intro\n\n`Varlet Release` is a tool used for publishing all packages, generating change logs, and checking `commit messages`, relying on `pnpm`.\n\n- 📦 **Out of the box**: Zero-configuration release experience\n- 🤖 **Interactive CLI**: Friendly interactive terminal prompts\n- 🛠 **Standardization**: Validates Git Commit messages and generates standard changelogs\n- 🔗 **Extensibility**: Supports both CLI commands and Node.js API for deep customization\n\n\u003e `Varlet Release` requires `Node.js` ^20.19.0 || \u003e=22.12.0 and `esm` only.\n\n## Installation\n\n```shell\npnpm add @varlet/release -D\n```\n\n## Usage\n\n### Core Workflow\n\nWhen executing `vr release`, the following sequence of lifecycles occurs automatically:\n\n1. Select/Confirm the **version** to publish interactively\n2. Execute the user-defined `task` function (optional, e.g., to rebuild projects based on the new version)\n3. Update the `package.json` **version** programmatically\n4. Generate the **Changelog**\n5. **Git Commit** \u0026 **Git Tag**\n6. **Publish** to npm\n\n### Using Command\n\n```shell\n# Release all packages and run the full workflow\nnpx vr release\n\n# Specify remote name\nnpx vr release -r origin\n# or\nnpx vr release --remote origin\n\n# Just generate changelogs\nnpx vr changelog\n\n# Specify changelog filename\nnpx vr changelog -f changelog.md\n# or\nnpx vr changelog --file changelog.md\n\n# Lint commit message\nnpx vr commit-lint -p .git/COMMIT_EDITMSG\n\n# Publish to npm, which can be called in the ci environment\nnpx vr publish\n\n# Check if lockfile has been updated\nnpx vr lockfile-sync-check\n\n# Auto install dependencies if lockfile changed\nnpx vr lockfile-sync-check -i\n```\n\n### Git Hooks Integration (Best Practice)\n\nIt is highly recommended to use `commit-lint` with `simple-git-hooks` or `husky` in `package.json` to automatically check developers' commit messages before committing:\n\n```json\n{\n  \"simple-git-hooks\": {\n    \"commit-msg\": \"npx vr commit-lint -p $1\"\n  }\n}\n```\n\n### Configuration\n\n#### release\n\n```\nUsage: vr release [flags...]\n\nFlags:\n  -r, --remote \u003cstring\u003e             Remote name\n  -s, --skip-npm-publish            Skip npm publish\n      --skip-changelog              Skip generate changelog\n      --skip-git-tag                Skip git tag\n  -t, --npm-tag \u003cstring\u003e            Npm tag\n  -c, --check-remote-version        Check remote version\n```\n\n#### publish\n\n```\nUsage: vr publish [flags...]\n\nFlags:\n  -c, --check-remote-version        Check remote version\n  -t, --npm-tag \u003cstring\u003e            Npm tag\n```\n\n#### changelog\n\n```\nUsage: vr changelog [flags...]\n\nFlags:\n  -c, --release-count \u003cnumber\u003e      Release count, default 0\n  -f, --file \u003cstring\u003e               Changelog filename\n```\n\n#### commit-lint\n\n```\nUsage: vr commit-lint [flags...]\n\nFlags:\n  -p, --commit-message-path \u003cstring\u003e  Git commit message path\n  -r, --commit-message-re \u003cstring\u003e    Validate the regular of whether the commit message passes\n  -e, --error-message \u003cstring\u003e        Validation failed to display error messages\n  -w, --warning-message \u003cstring\u003e      Validation failed to display warning messages\n```\n\n#### lockfile-sync-check\n\n```\nUsage: vr lockfile-sync-check [flags...]\n\nFlags:\n  -m, --package-manager \u003cstring\u003e    Package manager (npm, yarn, pnpm), default pnpm\n  -i, --install                     Auto install dependencies if lockfile changed\n```\n\n### Node API Custom Handle\n\nYou can write your own release scripts with Internal Node.js API instead of CLI.\n\n#### Example\n\n```js\nimport { changelog, release } from '@varlet/release'\n\n// Run the core release workflow directly\nrelease()\n```\n\nYou can pass in a custom `task` function that will be called after the package version is updated but before the remaining publish steps.\n\n```js\nimport { changelog, release } from '@varlet/release'\n\nasync function task(newVersion, oldVersion) {\n  await doSomething1()\n  await doSomething2()\n}\n\nrelease({ task })\n```\n\n## License\n\n[MIT](https://github.com/varletjs/release/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarletjs%2Fvarlet-release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvarletjs%2Fvarlet-release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarletjs%2Fvarlet-release/lists"}