By default, EAS CLI collects and compresses project files into an archive for upload. The packaging behavior depends on whether you are using Git or have opted out.
Default Behavior (Git-based)
EAS CLI approximates a git clone --depth 1 to allow building with a "dirty" working tree (uncommitted changes).
- Included: All files from the git root, including submodule content as it exists in your working directory.
- Excluded:
.git, node_modules, and files matched by .gitignore or .easignore. - Limitations:
- Multiple
.gitignore files are applied in isolation from the root, which can lead to unexpected exclusion patterns. - The
.git directory is not uploaded, which may break tools requiring Git metadata (e.g., Sentry needing commit hashes). - Sensitive files managed by
git-crypt are uploaded in their unencrypted state as they exist in your working directory.
Strict Git Mode (requireCommit: true)
If you set "requireCommit": true in the cli section of your eas.json, EAS CLI performs a real git clone --depth 1.
- The uploaded project is an exact replica of the Git state (including branch and commit hash).
- Note:
.easignore is not supported when requireCommit is enabled.
{
"cli": {
"requireCommit": true
}
}