{"id":48921418,"url":"https://github.com/theelegantcoding/gitlys","last_synced_at":"2026-04-27T05:00:50.306Z","repository":{"id":228046624,"uuid":"678588199","full_name":"TheElegantCoding/gitlys","owner":"TheElegantCoding","description":"📦️ A lightweight, zero-dependency release automation toolkit for Node.js and Bun. Handles semantic versioning, categorized changelogs, and automated GitHub releases","archived":false,"fork":false,"pushed_at":"2026-04-24T20:20:07.000Z","size":1403,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-24T21:36:34.404Z","etag":null,"topics":["bash","changelog","changelog-generator","clean-code","commit-conventions","commitlint","design-pattern","git","git-hook","git-hooks","github","lint-staged","performance","release","release-automation","release-notes","semantic-release","typescript","version-control","versioning"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/TheElegantCoding.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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-08-14T22:53:05.000Z","updated_at":"2026-04-24T20:20:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"6385ddf4-909c-4ee2-8025-17f01867d682","html_url":"https://github.com/TheElegantCoding/gitlys","commit_stats":null,"previous_names":["theelegantcoding/git_hook","theelegantcoding/gitlys"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/TheElegantCoding/gitlys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheElegantCoding%2Fgitlys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheElegantCoding%2Fgitlys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheElegantCoding%2Fgitlys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheElegantCoding%2Fgitlys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheElegantCoding","download_url":"https://codeload.github.com/TheElegantCoding/gitlys/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheElegantCoding%2Fgitlys/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32323215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"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":["bash","changelog","changelog-generator","clean-code","commit-conventions","commitlint","design-pattern","git","git-hook","git-hooks","github","lint-staged","performance","release","release-automation","release-notes","semantic-release","typescript","version-control","versioning"],"created_at":"2026-04-17T05:07:21.118Z","updated_at":"2026-04-27T05:00:50.292Z","avatar_url":"https://github.com/TheElegantCoding.png","language":"TypeScript","readme":"\u003cimg src=\"./.github/asset/illustration/wave_header.svg\" alt=\"wave\" width=\"100%\" /\u003e\n\n\u003ch1 id=\"top\" align=\"center\"\u003e\n  \u003cimg src=\"./.github/asset/icon/git.svg\" width=\"28px\" align=\"center\" /\u003e\n  Gitlys\n\u003c/h1\u003e\n\n\u003cbr /\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003cpre align=\"center\"\u003e\n  \u003ca href=\"#installation\"\u003e📦 SETUP\u003c/a\u003e • \u003ca href=\"#configuration\"\u003e⚙️ CONFIGURATION\u003c/a\u003e • \u003ca href=\"#features\"\u003e⚡ FEATURES\u003c/a\u003e \n\u003c/pre\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003cimg src=\"./.github/asset/illustration/gitlys_cover.svg\" width=\"100%\" /\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./.github/asset/illustration/bun_badged.svg\" height=\"34px\" /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"./.github/asset/illustration/github_badged.svg\" height=\"34px\" /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"./.github/asset/illustration/typescript_badged.svg\" height=\"34px\" /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"./.github/asset/illustration/node_badged.svg\" height=\"34px\" /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"./.github/asset/illustration/npm_badged.svg\" height=\"34px\" /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"./.github/asset/illustration/git_badged.svg\" height=\"34px\" /\u003e\n\u003c/div\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003ch2 id=\"about\"\u003e\n  \u003cimg src=\"./.github/asset/icon/information.svg\" width=\"24px\" align=\"center\"/\u003e\n  About\n\u003c/h2\u003e\n\n\u003ctable border=\"0\"\u003e\n\u003ctr\u003e\n\u003ctd\u003e\nThe ultimate Git workflow toolkit for Node and Bun. Orchestrate your entire release cycle: from linting staged files and enforcing commit standards to automated semantic versioning and GitHub releases.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr /\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003ch2 id=\"table-of-content\"\u003e\n  \u003cimg src=\"./.github/asset/icon/book.svg\" width=\"24px\" align=\"center\"/\u003e\n  Table of content\n\u003c/h2\u003e\n\n- [\u003cimg src=\"./.github/asset/icon/information.svg\" width=\"16px\" align=\"center\" /\u003e About](#about)\n- [\u003cimg src=\"./.github/asset/icon/thunder.svg\" width=\"16px\" align=\"center\" /\u003e Requirements](#requirements)\n- [\u003cimg src=\"./.github/asset/icon/package.svg\" width=\"16px\" align=\"center\" /\u003e Installation](#installation)\n- [\u003cimg src=\"./.github/asset/icon/rocket.svg\" width=\"16px\" align=\"center\" /\u003e Usage](#usage)\n- [\u003cimg src=\"./.github/asset/icon/gear.svg\" width=\"16px\" align=\"center\" /\u003e Configuration](#configuration)\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003ch2 id=\"requirements\"\u003e\n  \u003cimg src=\"./.github/asset/icon/thunder.svg\" width=\"24px\" align=\"center\"/\u003e\n  Requirements\n\u003c/h2\u003e\n\n- \u003cimg src=\"./.github/asset/icon/node.svg\" width=\"20px\" align=\"center\" /\u003e node \u003e= **22.17.0**\n- \u003cimg src=\"./.github/asset/icon/bun.svg\" width=\"20px\" align=\"center\" /\u003e bun \u003e= **1.1.0**\n- \u003cimg src=\"./.github/asset/icon/github.svg\" width=\"20px\" align=\"center\" /\u003e github cli \u003e= **2.89.0**\n\n\u003cbr /\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003ch1 id=\"installation\"\u003e\n  \u003cimg src=\"./.github/asset/icon/package.svg\" width=\"24px\" align=\"center\" /\u003e\n  Installation\n\u003c/h1\u003e\n\n\u003ch3\u003e\u003cimg src=\"./.github/asset/icon/bun.svg\" width=\"24px\" align=\"center\" /\u003e Bun\u003c/h3\u003e\n\n```bash\nbun i -D gitlys\n```\n\n\u003ch3\u003e\u003cimg src=\"./.github/asset/icon/npm.svg\" width=\"24px\" align=\"center\" /\u003e Npm\u003c/h3\u003e\n\n```bash\nnpm i -D gitlys\n```\n\n\u003ch3\u003e\u003cimg src=\"./.github/asset/icon/pnpm.svg\" width=\"24px\" align=\"center\" /\u003e Pnpm\u003c/h3\u003e\n\n```bash\npnpm i -D gitlys\n```\n\n\u003ch3\u003e\u003cimg src=\"./.github/asset/icon/yarn.svg\" width=\"24px\" align=\"center\" /\u003e Yarn\u003c/h3\u003e\n\n```bash\nyarn i -D gitlys\n```\n\n\u003cbr /\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003ch2 id=\"features\"\u003e\n  \u003cimg src=\"./.github/asset/icon/satellite.svg\" width=\"24px\" align=\"center\" /\u003e\n  Features\n\u003c/h2\u003e\n\n- \u003cimg src=\"./.github/asset/icon/check.svg\" width=\"18px\" align=\"center\" /\u003e `Commitlint` - Enforce commit message standards\n- \u003cimg src=\"./.github/asset/icon/check.svg\" width=\"18px\" align=\"center\" /\u003e `Lint-staged` - Lint staged files before commit\n- \u003cimg src=\"./.github/asset/icon/check.svg\" width=\"18px\" align=\"center\" /\u003e `Changelog` - Generate and maintain a changelog\n- \u003cimg src=\"./.github/asset/icon/check.svg\" width=\"18px\" align=\"center\" /\u003e `Semantic Release` - Automated semantic versioning and changelog generation\n- \u003cimg src=\"./.github/asset/icon/check.svg\" width=\"18px\" align=\"center\" /\u003e `GitHub Release` - Automatically create releases on GitHub with the generated changelog\n- \u003cimg src=\"./.github/asset/icon/check.svg\" width=\"18px\" align=\"center\" /\u003e `Customizable` - Highly customizable to fit your workflow\n\n\u003cbr /\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003ch2 id=\"usage\"\u003e\n  \u003cimg src=\"./.github/asset/icon/rocket.svg\" width=\"24px\" align=\"center\" /\u003e\n  Usage\n\u003c/h2\u003e\n\nTo initialize gitlys in your project, just run the following command in your terminal, you can use the package manager you want:\n\n```bash\nbunx gitlys init\n```\n\nIn order to release a version of your project, just run the following command in your terminal:\n\n```bash\nbunx gitlys release\n```\n\nI recommend you to add this command in your `package.json` for more comfortable use:\n\n```json\n{\n  \"scripts\": {\n    \"postinstall\": \"bunx gitlys init\",\n    \"release\": \"bunx gitlys release\",\n    \"prepublishOnly\": \"bun run build\",\n  }\n}\n```\n\n\u003cbr /\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003ch2 id=\"configuration\"\u003e\n  \u003cimg src=\"./.github/asset/icon/gear.svg\" width=\"24px\" align=\"center\" /\u003e\n  Configuration\n\u003c/h2\u003e\n\nThe configuration of gitlys is really simple, create a file named `.gitlys.json` in the root of your project and export an object with the configuration you want, for example:\n\n```json\n{\n  \"commitlint\": {\n    \"allowedTypes\": [\"feat\", \"fix\", \"docs\", \"style\", \"refactor\", \"perf\", \"test\", \"chore\"],\n    \"maxLength\": 120\n  },\n  \"lintStaged\": {\n    \"*.{ts,tsx,js,jsx}\": \"eslint --fix\",\n    \"*.{css,scss}\": \"stylelint --fix\"\n  },\n  \"release\": {\n    \"releaseToGithub\": false\n  },\n  \"changelog\": {\n    \"changelogPath\": \"CHANGELOG.md\",\n    \"generateChangelog\": false\n  },\n  \"packageManager\": \"npm\"\n}\n```\n\n- `commitlint.allowedTypes` - Allowed types for commit messages, by default it uses the conventional commits types\n- `commitlint.maxLength` - Maximum length for commit messages\n- `lintStaged` - Configuration for lint-staged, files and commands to run when those files are staged\n- `release.releaseToGithub` - Configuration for release, whether to release to GitHub or not\n- `changelog.changelogPath` - Path to the changelog file\n- `changelog.generateChangelog` - Whether to generate a changelog or not\n- `packageManager` - Package manager to use for install gitlys and run scripts\n\nAdditionally, if you are using Gitlens and also Copilot you can add the following configuration to your `settings.json` to have a better experience with gitlys:\n\n```json\n{\n  \"gitlens.codeLens.recentChange.enabled\": false,\n  \"gitlens.ai.generateCommitMessage.customInstructions\": \"Use conventional commits, format: \u003ctype\u003e: \u003cshort description in lowercase\u003e, The description should be concise and describe the change in a few words and always in lowercase, max length of 120 characters, allowed types: feat, fix, doc, style, refactor, perf, test, build, ci, config, update, release, breaking, typo, asset, package, language, security, revert, the message must be in English\",\n}\n```\n\n\u003cbr /\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003cpre align=\"center\"\u003e\n  \u003ca href=\"#top\"\u003eBACK TO TOP\u003c/a\u003e\n\u003c/pre\u003e\n\n\u003cimg \n  src=\"./.github/asset/illustration/divider.svg\" \n  alt=\"divider\" \n  width=\"100%\" \n/\u003e\n\n\u003cpre align=\"center\"\u003e\n  Copyright © All rights reserved,\n  developed by LuisdaByte and\n\u003c/pre\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./.github/asset/illustration/astralys_logo.svg\" width=\"120px\" align=\"center\" /\u003e\n\u003c/div\u003e\n\n\u003cimg src=\"./.github/asset/illustration/wave_footer.svg\" width=\"100%\" /\u003e","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheelegantcoding%2Fgitlys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheelegantcoding%2Fgitlys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheelegantcoding%2Fgitlys/lists"}