You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* chore: replace Yarn with pnpm
* chore: update remaining Yarn references in scripts and CI workflows
* chore: remove `useWorkspaces` from `lerna.json`
* chore: add Jest
* chore: remove `prepublishOnly` scripts
* chore: replace Lerna commands with pnpm equivalents in root `package.json`
* chore: update template
* chore: replace Lerna commands with pnpm equivalents
* chore: use pnpm's `workspace:*` protocol for `apps/*`
* chore: use pnpm catalogs
* docs: update publishing instructions to be more accurate
- Each package delegates build/test/lint to `expo-module-scripts`
54
54
- TypeScript source in `src/`, compiled output in `build/`
55
+
- Shared dependency versions are defined in the `catalog:` block in `pnpm-workspace.yaml` and referenced with `catalog:` in each package's `package.json`
55
56
- Peer dependency on `expo@^55`
56
57
- Tests use Jest with `memfs` for virtual filesystem testing
57
58
58
59
## Upgrading Plugins for a New Expo SDK Version
59
60
60
61
When a new Expo SDK is released (e.g., SDK 54 → SDK 55), every package and example app must be updated. Use conventional commits scoped to the package name (e.g., `chore(react-native-foo): bump to expo@^55`).
61
62
63
+
### Catalog updates (`pnpm-workspace.yaml`)
64
+
65
+
Update the `catalog:` block with the new SDK versions for shared dependencies:
66
+
67
+
1.**`expo`** — Update to `^<NEW_SDK>` (used as `peerDependencies` in all packages).
68
+
2.**`expo-module-scripts`** — Update to `^<NEW_SDK>`.
69
+
3.**`@expo/config-plugins`** — Update to `^<NEW_SDK>`.
70
+
4. Review other catalog entries (`@expo/image-utils`, `@expo/plist`, etc.) and bump if needed.
71
+
62
72
### Per-package updates (`packages/<name>/`)
63
73
64
74
For each package:
65
75
66
-
1.**`package.json`** — Update `peerDependencies.expo` to `^<NEW_SDK>`.
67
-
2.**`README.md`** — Add a new row to the version compatibility table with the new SDK version, the latest compatible upstream package version, and the next config plugin major version.
68
-
3.**Build & test** — Run `yarn build` and `yarn test` (if tests exist) to verify nothing broke.
76
+
1.**`README.md`** — Add a new row to the version compatibility table with the new SDK version, the latest compatible upstream package version, and the next config plugin major version.
77
+
2.**Build & test** — Run `pnpm build` and `pnpm test` (if tests exist) to verify nothing broke.
69
78
70
79
### Example app updates (`apps/<name>/`)
71
80
@@ -77,21 +86,19 @@ For each example app:
77
86
78
87
### Monorepo root updates
79
88
80
-
1.**`package.json`** — Update `expo-module-scripts` to the version matching the new SDK (e.g., `^55.0.2`).
81
-
2.**`scripts/generate-plugin.ts`** — Update `SDK_VERSION` to the new SDK number.
82
-
3.**`scripts/template/package.json`** — Update the `expo` peer dependency version.
89
+
1.**`scripts/generate-plugin.ts`** — Update `SDK_VERSION` to the new SDK number.
83
90
84
91
### Final steps
85
92
86
-
1. Run `yarn` from the root to regenerate `yarn.lock`.
87
-
2. Run `yarn prepare` to verify all packages build.
93
+
1. Run `pnpm install` from the root to regenerate `pnpm-lock.yaml`.
94
+
2. Run `pnpm prepare` to verify all packages build.
88
95
3. Run tests for packages that have them.
89
96
4. Update `CLAUDE.md` if any conventions changed (e.g., the peer dependency version listed under Conventions).
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+9-6Lines changed: 9 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,27 +5,27 @@
5
5
To submit a pull request:
6
6
7
7
1. Fork the [repository](https://github.com/expo/config-plugins) and create a feature branch. (Existing contributors can create feature branches without forking. Prefix the branch name with `@your-github-username/`.)
8
-
2. Run `yarn` in the root directory to generate the build files.
8
+
2. Run `pnpm install` in the root directory to generate the build files.
9
9
3. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) including in the PR title.
10
10
4. Fill out the entire PR template. Ensure your code is tested locally and has continuous tests in CI.
11
11
5. Make sure all tests pass on GitHub Actions.
12
12
6. Wait for a review and adjust the code if necessary.
13
13
14
14
## Creating a plugin
15
15
16
-
- Plugins can be generated by running `yarn gen`.
16
+
- Plugins can be generated by running `pnpm gen`.
17
17
- Add plugins to the example in [`apps/app`](/apps/app/package.json) to test them.
18
18
- The example app should always stay in a state of regeneration.
19
19
20
20
Be sure to run the following scripts in the **root directory** to update automation tools:
- Update the issue template: `pnpm update-issue-template`
24
24
25
25
## Upgrading plugins for a new Expo version
26
26
27
+
- Update the `catalog:` block in `pnpm-workspace.yaml` with the new SDK versions for `expo`, `expo-module-scripts`, `@expo/config-plugins`, and any other shared dependencies
27
28
- Ensure every project under `apps/` is updated to latest version of Expo
28
-
- Ensure every library under `packages/` has a peer dependency on the same version of Expo
29
29
- Update each library’s `README.md`
30
30
- Ensuring the latest version of Expo is listed
31
31
- Ensure the upstream package version is correct
@@ -34,4 +34,7 @@ Be sure to run the following scripts in the **root directory** to update automat
34
34
35
35
## Publishing a release
36
36
37
-
All publishing should be handled automatically whenever code is merged to `main`.
37
+
Packages are published manually using the scripts in the root `package.json`:
38
+
39
+
1.`pnpm bump`: Increments the major version of all packages.
0 commit comments