{"id":29022991,"url":"https://github.com/bamlab/react-native-project-config","last_synced_at":"2025-10-15T11:20:01.946Z","repository":{"id":180642338,"uuid":"584719277","full_name":"bamlab/react-native-project-config","owner":"bamlab","description":"Monorepo with packages for setting up ESLint, Typescript, Prettier and Jest.","archived":false,"fork":false,"pushed_at":"2025-09-29T22:39:24.000Z","size":2612,"stargazers_count":8,"open_issues_count":16,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-09-30T00:26:54.871Z","etag":null,"topics":[],"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/bamlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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-01-03T10:41:36.000Z","updated_at":"2025-09-11T15:10:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"45b8477e-9729-4555-8225-ab196d178d44","html_url":"https://github.com/bamlab/react-native-project-config","commit_stats":null,"previous_names":["bamlab/react-native-project-config"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/bamlab/react-native-project-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamlab%2Freact-native-project-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamlab%2Freact-native-project-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamlab%2Freact-native-project-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamlab%2Freact-native-project-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bamlab","download_url":"https://codeload.github.com/bamlab/react-native-project-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamlab%2Freact-native-project-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279076362,"owners_count":26098146,"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-10-15T02:00:07.814Z","response_time":56,"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":[],"created_at":"2025-06-26T03:04:51.949Z","updated_at":"2025-10-15T11:20:01.926Z","avatar_url":"https://github.com/bamlab.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# react-native-project-config by BAM\n\nMonorepo with packages for setting up ESLint and Typescript for any new React Native project.\n\n## Presentation\n\nThe goal of the project is too have a set of configuration files that can be easily imported into a new project, which would reduce the burden of starting new projects.\n\nThis repo uses [lerna](https://lerna.js.org/) to maintain, version and publish various packages for configuring ESLint and Typescript.\n\nThere is also an example app under `packages/example-app` whose goal is to demonstrate how to import and use the configuration packages.\n\n## Using the configurations\n\n- [Using ESLint plugin](https://github.com/bamlab/react-native-project-config/blob/main/packages/eslint-plugin/README.md)\n- [Using Typescript config](https://github.com/bamlab/react-native-project-config/blob/main/packages/typescript-config/README.md)\n\n## Installing the project\n\n- clone the project: `git clone https://github.com/bamlab/react-native-project-config`,\n- install the dependencies: `yarn install`,\n- build the eslint-plugin: `yarn workspace @bam.tech/eslint-plugin build`\n- test the errors: `yarn workspace example-app lint`\n\n✅ Check: in the example-app in eslint-breaking-examples you should see the eslint errors.\n\n## Modifying the project\n\nTo have a complete understanding on how to modify the project, see [Lerna's documentation](https://lerna.js.org/docs/introduction).\n\nHere are some useful commands:\n\n- creating a new package named `package-my-config`: `yarn lerna create package-my-config`,\n- rename the directory of a package: `mv package-my-config new-directory-name \u0026\u0026 yarn lerna bootstrap`,\n- run a script `do-something` that exists in at least one package: `yarn lerna run do-something` (this will try to run the script in all packages in which it is defined).\n\n- [Testing ESLint plugin](https://github.com/bamlab/react-native-project-config/blob/main/packages/eslint-plugin/docs/Testing.md)\n\n## Conventional commits\n\nWe use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) to automate the release process.\n\n\u003e If you add a new rule to a config, this is a breaking change, because it could make the CI fail on projects that use the plugin. The commit name where you add the new rule needs to follow this pattern `BREAKING CHANGE: the description of your commit`\n\n## Publishing a new version of a package\n\nThe publication is done automatically by this [Github Workflow](https://github.com/bamlab/react-native-project-config/blob/main/.github/workflows/publish.yml) when a new tag is pushed to the repository.\nAll you have to do is the versioning of the packages you want to publish.\n\n\u003e You need to be on the main branch and have the repo write access to publish a new version.\n\nRun `yarn lerna version` to start the process. It will run the command `yarn lerna version --conventional-commits --no-private`.\n\nLerna will prompt you to select the version bump for each package. It will also generate the changelog for each package based on the commit messages since the last version.\n\n\u003e Versioning and changelogs generation using [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/)\n\nHere's an example of the output:\n\n```bash\nlerna info Looking for changed packages since @bam.tech/eslint-plugin@1.0.0\nlerna info getChangelogConfig Successfully resolved preset \"conventional-changelog-angular\"\n\nChanges:\n - @bam.tech/eslint-plugin: 1.0.0 =\u003e 1.1.0\n```\n\nIt will then push a tagged commit `chore(release): Publish` which will then trigger the Github Workflow to publish the new version of each package to NPM.\n\n## Unpublish a package version\n\nIf you want to unpublish a package, you have to be contributor of @bam.tech/eslint-plugin (in this case for the eslint plugin). Use the following commad:\n`npm unpublish @bam.tech/eslint-plugin@X.Y.Z`\n\n## Running commands\n\n- `yarn lerna run start`: run the 'start' script in all packages (currently only present in `example-app`),\n- `yarn lerna run lint`: run the 'lint' script in all packages (currently only present in `example-app`).\n\n## How to contribute\n\n- Pick one issue [here](https://github.com/bamlab/react-native-project-config/issues)\n- Pick one task [here](https://github.com/orgs/bamlab/projects/6)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbamlab%2Freact-native-project-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbamlab%2Freact-native-project-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbamlab%2Freact-native-project-config/lists"}