fix(android): require expo/config-plugins re-export from with-release-signing plugin #285
No reviewers
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol!285
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "284-android-config-plugins-require"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
apps/client/plugins/with-release-signing.jsrequired@expo/config-pluginsdirectly. That package is a transitive ofexpo, not a declared dep of @carol/client, so pnpm's strict node_modules layout hides it fromapps/client/plugins/.release-android.yml(run #708) now gets past the configuration phase (thanks #279) and hits:expo-constants:createExpoConfig+:app:createBundleReleaseJsAndAssets, both of which spawnnodeto load this plugin — they fail withCannot find module '@expo/config-plugins'.require("expo/config-plugins")— a one-linemodule.exports = require('@expo/config-plugins')re-export shim that ships inside theexpopackage. Same module, resolvable from@carol/client. Matches the pattern every official Expo plugin uses (expo-secure-store/plugin/..., etc.).Test plan
node -e "require('./plugins/with-release-signing.js')"fromapps/clientresolves cleanly with the new require.pnpm -F @carol/client test— all 120 vitest cases still pass.release-android.ymlreaches signing / asset bundling on the next run.Closes #284.
🤖 Generated with Claude Code
apps/client/plugins/with-release-signing.js required `@expo/config-plugins` directly, but that package is a transitive of `expo` — not a declared dep of @carol/client. pnpm's strict node_modules layout hides unscoped transitives from `apps/client/plugins/`, so the Gradle tasks that spawn `node` to load the plugin (`:expo-constants:createExpoConfig`, `:app:createBundleReleaseJsAndAssets`) blew up with `Cannot find module '@expo/config-plugins'`. Switch to `require("expo/config-plugins")` — a one-line re-export shim that lives inside the `expo` package. Same module, but resolvable from `@carol/client` since `expo` is a direct dep. Matches the pattern every official Expo plugin uses. The bug has been latent since #187. Earlier release-android runs never surfaced it because they died earlier at the foojay/IBM_SEMERU configuration-phase failure that #279 fixed. Verified: - `node -e "require('./plugins/with-release-signing.js')"` from apps/client resolves the module cleanly. - All 120 @carol/client vitest tests pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>📊 Test coverage
Patch coverage: no testable lines changed.
Overall (
app/,lib/,db/, excluding UI per ADR-0019):Soft thresholds per ADR-0019. Coverage is informational and does not block merge.