{"id":25254112,"url":"https://github.com/eriicafes/reflow","last_synced_at":"2025-10-27T00:31:01.168Z","repository":{"id":39657694,"uuid":"458841864","full_name":"eriicafes/reflow","owner":"eriicafes","description":"An opinionated workflow tool for Typescript projects 🚀","archived":false,"fork":false,"pushed_at":"2022-07-19T11:46:12.000Z","size":729,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-08T15:44:43.095Z","etag":null,"topics":["commithooks","commitizen","eslint","git","husky","prettier","typescript"],"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/eriicafes.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}},"created_at":"2022-02-13T15:01:33.000Z","updated_at":"2023-06-14T18:36:02.000Z","dependencies_parsed_at":"2022-07-17T00:16:02.664Z","dependency_job_id":null,"html_url":"https://github.com/eriicafes/reflow","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriicafes%2Freflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriicafes%2Freflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriicafes%2Freflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eriicafes%2Freflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eriicafes","download_url":"https://codeload.github.com/eriicafes/reflow/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238416205,"owners_count":19468456,"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":["commithooks","commitizen","eslint","git","husky","prettier","typescript"],"created_at":"2025-02-12T05:08:52.710Z","updated_at":"2025-10-27T00:31:00.733Z","avatar_url":"https://github.com/eriicafes.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reflow 🚀\n\n### An opinionated workflow tool for Typescript projects 🚀\n\nReflow is aimed at reducing the complexity in setting up a proper dev environment for typescript projects.\n\n## Features\n\n- Git workflow **(Reflow CLI)**\n- Format files with [Prettier](https://prettier.io)\n- Lint files with [ESLint](https://eslint.org)\n- Lint staged files for commit with [Lint Staged](https://github.com/okonet/lint-staged)\n- Compose conventional commit messages with [Commitizen](https://github.com/commitizen/cz-cli) and [cz-conventional-changelog](https://github.com/commitizen/cz-conventional-changelog)\n- Verify commit messages with [Commitlint](https://commitlint.js.org)\n- Git Hooks with [Husky](https://github.com/typicode/husky)\n- Bump versions with [Standard Version](https://github.com/conventional-changelog/standard-version)\n- CI/CD with [GitHub Actions](https://github.com/features/actions)\n\n## Installation\n\n#### Install locally:\n\n```bash\nnpm install @eriicafes/reflow\n```\n\nAnd initialise:\n\n```bash\nnpx reflow init\n```\n\n#### Or install both globally and locally (preferred):\n\n```bash\nnpm install -g @eriicafes/reflow # global\n\nnpm install @eriicafes/reflow #local\n```\n\nAnd initialise:\n\n```bash\nreflow init\n```\n\nWith a global installation you will not be required to use `npx`. Global installation is preferred as reflow still requires a local installation and will always run the locally installed binary when available.\n\n## Usage/Examples\n\nExamples below assume you have both a global installation and a local installation, for local installation only you will have to prefix the command with `npx`\n\nAll commands have a `-h or --help` flag to display a help message.\nNearly all commands have a `-d or --dry-run` flag useful to see the commands that would run without actually making any changes.\nCommand arguments in square brackets `[]` are optional while those in angle brackets `\u003c\u003e` are required.\n\n### Initialise reflow workspace\n\n```bash\nreflow init\n\nOptions:\n  -n --no-install  turn off automatic package installation\n  --lib            initialize as an npm library\n```\n\n### Branching\n\ncreate and checkout new branch\n\n```bash\nreflow branch [name] [parent]\n```\n\nrename the current branch\n\n```bash\nreflow branch -r [name]\n```\n\n### Checkout\n\n```bash\nreflow checkout [branch]\n```\n\ncheckout with search on branches (this examples searches for all branches beginning with `feat`)\n\n```bash\nreflow checkout feat\n```\n\n### Merge\n\nmerge branch to the main branch (whether on the main branch or on the branch to be merged)\n\n```bash\nreflow merge\n\nOptions:\n  --prefer-ff   always perform a fast-foward merge (default: false)\n```\n\n### Commit\n\n```bash\nreflow commit\n\nOptions:\n  --retry     retry last commit attempt\n```\n\n### Push\n\npush branch to remote (prompts to sets upstream if not available) \\\nforce push is a bit less dangerous as the following flags are attached `-f --force-with-lease --force-if-includes`\n\n```bash\nreflow push\n\nOptions:\n  -f --force  force push\n```\n\n### Release\n\nmake a release (bump version, tag commit and push changes) \\\nwould usually only be run on a CI/CD pipeline except if `-f or --force` flag is used\n\n```bash\nreflow release\n\nOptions:\n  -f --force      force release when not in a CI environment (default: false)\n  -a --as \u003ctype\u003e  release with a specific version type\n  --no-push       prevent pushing changes and tags to remote\n```\n\nNOTE: For projects that started with a major version at zero (0.y.z) you may need some manual action to bump the major version to 1.0.0. Once the project is ready for the first major release, run the command below from the main branch:\n\n```bash\nreflow release --as major -f\n```\n\n### Prerelease\n\nmake a pre-release (eg. v1.0.1-{tag}.0)\n\n```bash\nreflow prerelease\n\nOptions:\n  -t --tag \u003cname\u003e  pre-release tag\n  --as \u003ctype\u003e      release with a specific version type\n  --no-push        prevent pushing changes and tags to remote\n```\n\nfor example if version is at 0.1.0 and we want to make a prerelease with an alpha tag and release as a a minor version:\n\n```bash\nreflow prerelease -t alpha --as minor\n```\n\nthis will bump the version from 0.1.0 to 0.2.0-alpha.0\n\n### Generate Files\n\ntype includes `configs`, `actions` and `hooks`, file is the file name, run the command without any arguments to see all possible files to generate\n\n```bash\nreflow generate [type] [file]\n\nOptions:\n   -c --common   generate all common template files\n   -a --all      generate all template files\n```\n\n### Actions (github actions)\n\nWhen you run `reflow init` a `test.yml` workflow will be generated, which will run tests and build using `npm test` and `npm run build` respectively.\nAll actions are listed below:\n\n- test.yml (run tests and build)\n- version.yml (bump version and push new update with tags) requires a **VERSION_TOKEN** secret containing a Github Personal Access Token with repo permissions\n- release.yml (triggered by version.yml workflow, creates a draft github release)\n- publish.yml (triggered by release.yml workflow, publishes package to NPM) requires an **NPM_TOKEN** secret containing an NPM Access Token\n\nAll actions can be modified as needed\n\n### Advanced (configure reflow CLI)\n\nFor some use cases you may need to override certain defaults in the reflow config by first generating the config file using `reflow generate` and selecting `config/reflow` (which is probably the last item on the list)\n\nBelow are the defaults which you may customize as needed:\n\n```json\n{\n  \"mainBranch\": \"main\",\n  \"remote\": \"origin\",\n  \"branchDelimeter\": \"/\",\n  \"allowedBranches\": [\n    \"feature\",\n    \"fix\",\n    \"chore\",\n    \"refactor\",\n    \"build\",\n    \"style\",\n    \"docs\",\n    \"test\"\n  ],\n  \"keepMergeCommits\": true\n}\n```\n\n## Contributing\n\nPull requests are always welcome!\n\n## Authors\n\n- [@eriicafes](https://www.github.com/eriicafes)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feriicafes%2Freflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feriicafes%2Freflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feriicafes%2Freflow/lists"}