Le .zip d'un projet React Native
Ce que votre archive React Native doit contenir, ce que Releasely télécharge pour vous pendant le build, et ce que vous pouvez laisser de côté.
En résumé : zippez votre dossier de projet avec vos dossiers natifs ios/ et android/, votre
package.json et votre lockfile, et vos éventuelles dépendances privées — mais sans node_modules/,
sans les caches natifs, ni les dossiers de build.
Le test rapide
Ouvrez votre .zip : si vous voyez package.json directement à la racine, à côté des dossiers
ios/ et android/, l'archive est bien formée. S'ils sont enfouis dans un ou plusieurs
dossiers, re-zippez le contenu du dossier projet plutôt que le dossier lui-même.
Projet Expo « managed » ? C'est pris en charge
Si votre projet n'a pas de dossiers ios/ et android/ (Expo managed), Releasely exécute
expo prebuild pour vous pendant le build. Assurez-vous simplement que votre config Expo
(app.json ou app.config.js) est complète, en particulier le package Android
(android.package) et le bundle identifier iOS (ios.bundleIdentifier). Vous pouvez aussi
committer vous-même ios/ et android/ (workflow « bare ») : ils sont alors utilisés tels quels.
Ce que l'archive doit contenir
package.json— la carte d'identité du projet, à la racine de l'archive.- Votre lockfile —
package-lock.json,yarn.lock,pnpm-lock.yamloubun.lockb: il fige les versions exactes de vos dépendances, pour un build identique à celui que vous testez en local. ios/etandroid/— les dossiers plateforme (Podfile, projet Xcode,build.gradle, permissions…). Le build en a besoin, même si vous n'y avez jamais touché.- Votre code —
App.tsx,src/,index.js, etc. - Vos assets — images, polices et autres fichiers référencés par l'app.
- Les fichiers de configuration utilisés par l'app, s'ils existent :
google-services.json(Firebase Android),GoogleService-Info.plist(Firebase iOS), fichiers.envlus au moment du build, etc.
Épinglez votre version de Node
Comme Releasely reproduit votre chaîne d'outils, ajoutez un .nvmrc (ou .node-version, ou le
champ engines.node / volta de package.json) pour builder avec la même version de Node que
chez vous. Le gestionnaire de paquets (yarn, pnpm, npm…) est déduit de votre lockfile.
Une archive bien formée ressemble à ceci :
mon-app.zip
├── package.json
├── yarn.lock ← ou package-lock.json / pnpm-lock.yaml
├── .nvmrc ← recommandé : la version de Node
├── App.tsx
├── src/
├── ios/
├── android/
└── assets/Dépendances locales et privées : à inclure
Nous compilons uniquement ce qui est dans l'archive. La machine de build n'a accès ni à votre ordinateur, ni à vos dépôts git privés, ni à vos registres npm privés. Donc :
- Les dépendances locales (
file:../mon-package) doivent être incluses dans le.zip, avec des chemins relatifs qui restent valables à l'intérieur de l'archive. Si un chemin pointe hors de l'archive (../mon-package), déplacez le package dans le projet et mettez le chemin à jour. - Les dépendances venant d'un git privé ou d'un registre npm privé doivent être copiées dans le projet (ou vendorisées), car le build ne peut pas s'y connecter.
Ce que Releasely télécharge pour vous
Inutile de les mettre dans l'archive — elles sont récupérées automatiquement pendant le build :
- les packages npm (
npm ci/yarn install/pnpm installest exécuté pour vous, selon votre lockfile) ; - les CocoaPods iOS (
pod installtourne sur le Mac de build) ; - la version de Node que vous avez épinglée (installée à la demande, jamais figée côté serveur).
Ce que vous pouvez exclure
Ces dossiers sont régénérés au build — les inclure ne fait qu'alourdir l'envoi :
node_modules/— réinstallé depuis votre lockfile (souvent le plus gros dossier : à exclure en priorité) ;ios/Pods/etandroid/.gradle/— les caches des dépendances natives ;ios/build/,android/app/build/— les artefacts de compilation ;.git/— l'historique de votre dépôt ;.idea/,*.iml,.vscode/— la configuration de votre éditeur.
Sur macOS ou Linux, cette commande crée une archive propre depuis la racine du projet :
zip -r mon-app.zip . -x "node_modules/*" "ios/Pods/*" "ios/build/*" "android/.gradle/*" "android/app/build/*" ".git/*" ".idea/*" ".vscode/*"Signature : jamais dans le .zip
Les secrets se fournissent dans Credentials
Ne mettez ni keystore, ni certificat, ni clé API dans l'archive. La signature Android (keystore, si votre app en nécessite un) et la connexion App Store se configurent dans l'écran Credentials de votre projet — Releasely s'occupe de signer les builds.
Taille et numéro de build
- 2 Go maximum par archive — largement suffisant pour un projet sans
node_modulesni dossiers de build. - Le numéro de build est incrémenté automatiquement à partir du dernier build connu ; un champ
sur l'écran Upload permet de le forcer si vous devez rattraper un numéro déjà utilisé sur les
stores. Il est imposé au build sans modifier votre
build.gradleni votre projet Xcode.
Et ensuite ?
Une fois l'archive envoyée, Releasely lance le build cloud (iOS et/ou Android selon votre projet) et le binaire produit rejoint automatiquement votre prochaine version.