{"id":13602397,"url":"https://github.com/expo-community/standard-version-expo","last_synced_at":"2025-12-30T00:34:48.145Z","repository":{"id":40290528,"uuid":"231848634","full_name":"expo-community/standard-version-expo","owner":"expo-community","description":"Automatic Expo versioning with Standard Version","archived":false,"fork":false,"pushed_at":"2023-03-04T05:35:57.000Z","size":205,"stargazers_count":97,"open_issues_count":22,"forks_count":30,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-02T07:58:45.584Z","etag":null,"topics":["automation","convetional-commits","expo","release","standard-version"],"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/expo-community.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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":"2020-01-05T00:42:25.000Z","updated_at":"2024-07-09T04:11:50.000Z","dependencies_parsed_at":"2024-06-18T16:47:57.191Z","dependency_job_id":"9e4ac61e-02aa-4ec9-b689-926ad5946dc0","html_url":"https://github.com/expo-community/standard-version-expo","commit_stats":{"total_commits":24,"total_committers":3,"mean_commits":8.0,"dds":0.125,"last_synced_commit":"076486db33efb8a9bd4a180cdbfd4167fc1e3067"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expo-community%2Fstandard-version-expo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expo-community%2Fstandard-version-expo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expo-community%2Fstandard-version-expo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expo-community%2Fstandard-version-expo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/expo-community","download_url":"https://codeload.github.com/expo-community/standard-version-expo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223464712,"owners_count":17149601,"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":["automation","convetional-commits","expo","release","standard-version"],"created_at":"2024-08-01T18:01:22.115Z","updated_at":"2025-12-30T00:34:48.093Z","avatar_url":"https://github.com/expo-community.png","language":"TypeScript","funding_links":[],"categories":["automation"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eStandard Version Expo\u003c/h1\u003e\n  \u003cp\u003eAutomatic \u003ca href=\"https://github.com/expo/expo\"\u003eExpo\u003c/a\u003e versioning with \u003ca href=\"https://github.com/conventional-changelog/standard-version\"\u003eStandard Version\u003c/a\u003e\u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/expo-community/standard-version-expo/releases\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/release/expo-community/standard-version-expo/all.svg\" alt=\"releases\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/expo-community/standard-version-expo/actions\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/workflow/status/expo-community/standard-version-expo/CI/master.svg\" alt=\"builds\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://dev.to/bycedric/simplify-expo-releases-with-standard-version-2f4o\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/guide-dev.to-lightgrey\" alt=\"guide\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cpre\u003enpm i -D standard-version@next standard-version-expo\u003c/pre\u003e\n\u003c/div\u003e\n\n## What's inside?\n\nStandard version is a tool to automate the versioning of your project using semver and [conventional commits][link-conventional].\nThis package includes some helpful bumpers to update the Expo manifest automatically.\nWith these bumpers you can automate updating the [`version`][link-expo-version], [Android `versionCode`][link-expo-android], and/or [iOS `buildNumber`][link-expo-ios].\nYou should be able to automate versioning of your app by using a single command, like:\n\n```bash\n$ npx standard-version --release-as minor\n```\n\n\u003e If you receive an error like `Invalid Version: undefined`, make sure your `package.json` has a starting `version`.\n\n## Getting started\n\nIt's recommended to install both Standard Version and this package as `devDependency`.\nYou can do this with the npm command listed at the top of this read me.\nAfter you installed the packages, we need to [configure Standard Version using any of the configuration methods listed here][link-standard-version].\nHere is an example configuration that updates the version, Android `versionCode`, and iOS `buildNumber` using the recommended approaches.\n\n```js\n// .versionrc.js\nmodule.exports = {\n  bumpFiles: [\n    {\n      filename: 'package.json',\n    },\n    {\n      filename: 'app.json',\n      updater: require.resolve('standard-version-expo'),\n    },\n    {\n      filename: 'app.json',\n      updater: require.resolve('standard-version-expo/android'),\n    },\n    {\n      filename: 'app.json',\n      updater: require.resolve('standard-version-expo/ios'),\n    },\n  ],\n};\n```\n\nTo test if your configuration works as expected, you can run standard version in dry mode.\nThis shows you what will happen, without actually applying the versions and tags.\n\n```bash\n$ npx standard-version --dry-run\n```\n\n## Usage\n\nStandard Version's version bumpers are pretty simple; each bump only updates a single file using a single updater.\nThis package exposes multiple kinds of updaters, for different areas of the manifest.\nYou can \"compose\" your own set of `bumpFiles` entries to suit your needs.\n\n| updater             | example     | description                                                                                                         |\n| ------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------- |\n| `\u003croot\u003e`            | `3.2.1`     | _alias of `manifest/version`_                                                                                       |\n| `manifest`          | `3.2.1`     | _alias of `manifest/version`_                                                                                       |\n| `manifest/version`  | `3.2.1`     | Replace `expo.version` with the exact calculated semver. (**recommended**)                                          |\n| `android`           | `360030201` | _alias of `android/code`_                                                                                           |\n| `android/code`      | `350010000` | Replace `expo.android.versionCode` with the [method described by Maxi Rosson][link-version-code]. (**recommended**) |\n| `android/increment` | `8`         | Replace `expo.android.versionCode` with an incremental version.                                                     |\n| `ios`               | `3.2.1`     | _alias of `ios/version`_                                                                                            |\n| `ios/code`          | `360030201` | Replace `expo.ios.buildNumber` with the [method described by Maxi Rosson][link-version-code].                       |\n| `ios/increment`     | `9`         | Replace `expo.ios.buildNumber` with an incremental version.                                                         |\n| `ios/version`       | `3.2.1`     | Replace `expo.ios.buildNumber` with the exact calculated semver. (**recommended**)                                  |\n\n### Version code\n\nSemver is one of the most popular versioning methods; it generates a string with a syntax that even humans can read.\nUnfortunately, in Android, we are limited to use a numeric `versionCode` as version.\nThe version code uses an approach from [Maxi Rosson][link-version-code] to calculate a numeric value from semver.\nIt's a deterministic solution that removes some of the ambiguity of incremental build numbers, like security-patching old versions.\n\n\u003e The method initially uses the Android minimum API level. For Expo, we replaced this with the major Expo SDK version.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cbr /\u003e\n  with :heart: \u003cstrong\u003ebyCedric\u003c/strong\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n\n[link-conventional]: https://www.conventionalcommits.org/en/v1.0.0/\n[link-expo-android]: https://docs.expo.io/versions/latest/workflow/configuration#android\n[link-expo-ios]: https://docs.expo.io/versions/latest/workflow/configuration#ios\n[link-expo-version]: https://docs.expo.io/versions/latest/workflow/configuration#version\n[link-standard-version]: https://github.com/conventional-changelog/standard-version#configuration\n[link-version-code]: https://medium.com/@maxirosson/versioning-android-apps-d6ec171cfd82\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpo-community%2Fstandard-version-expo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpo-community%2Fstandard-version-expo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpo-community%2Fstandard-version-expo/lists"}