- firebase-cli — Firebase Command Line Interface
- Keyword
- :
- firebase
- ·
- firebase deploy
- ·
- firebase init
- ·
- firebase emulators
- The Firebase CLI (
- firebase-tools
- ) manages your Firebase project from the terminal:
- deploy, emulate, import/export data, manage users, configure services, and automate CI/CD.
- When to use this skill
- Deploy Firebase Hosting, Cloud Functions, Firestore rules/indexes, Realtime Database rules, Cloud Storage rules, Remote Config, or Extensions
- Set up a new Firebase project with
- firebase init
- Run the Firebase Emulator Suite locally for development and testing
- Manage preview/staging channels for Hosting
- Import or export Firebase Authentication users in bulk
- Distribute app builds to testers via App Distribution
- Manage Firebase Extensions (install, configure, update, uninstall)
- Deploy Next.js / Angular apps via Firebase App Hosting
- Use Firebase CLI in CI/CD pipelines with service account credentials
- Instructions
- Install the Firebase CLI:
- npm install -g firebase-tools
- Authenticate:
- firebase login
- (browser OAuth) or
- GOOGLE_APPLICATION_CREDENTIALS
- for CI
- Initialize project:
- firebase init
- (creates
- firebase.json
- and
- .firebaserc
- )
- Deploy:
- firebase deploy
- or
- firebase deploy --only hosting,functions
- Run emulators:
- firebase emulators:start
- For detailed command reference, see
- references/commands.md
- For installation and setup scripts, see
- scripts/install.sh
- CI/CD
- Use GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json firebase deploy instead of the deprecated --token / FIREBASE_TOKEN method. Examples Deploy everything firebase deploy Deploy only Hosting and Functions firebase deploy --only hosting,functions Run all emulators with data persistence firebase emulators:start --import ./emulator-data --export-on-exit Create a preview channel and deploy firebase hosting:channel:create staging --expires 7d firebase hosting:channel:deploy staging Import users from JSON firebase auth:import users.json --hash-algo = BCRYPT Distribute Android build to testers firebase appdistribution:distribute app-release.apk \ --app "1:1234567890:android:abcd1234" \ --release-notes "Sprint 42 build" \ --groups "qa-team" Quick Start
Install
npm install -g firebase-tools
Authenticate
firebase login
Initialize project (interactive)
firebase init
Deploy
firebase deploy
Run emulators
firebase emulators:start Installation npm (recommended — all platforms) npm install -g firebase-tools firebase --version Standalone binary (macOS/Linux — no Node.js required) curl -sL firebase.tools | bash CI/CD — service account authentication (recommended)
Set environment variable pointing to service account JSON key
export GOOGLE_APPLICATION_CREDENTIALS = "/path/to/service-account-key.json" firebase deploy --non-interactive Via skill script bash scripts/install.sh Core Usage Authentication firebase login
OAuth browser login
firebase login --no-localhost
Copy-paste code flow
firebase login:ci
Generate CI token (deprecated — use service account)
firebase login:list
List all authorized accounts
firebase login:use user@example.com
Set default account
firebase logout
Sign out
Project Management firebase init
Set up Firebase features in current directory
firebase use < project_id
Set active project
firebase use --add
Add a project alias
firebase projects:list
List all Firebase projects
firebase open hosting:site
Open Firebase console in browser
Deployment
Deploy everything
firebase deploy
Deploy specific targets
firebase deploy --only hosting firebase deploy --only functions firebase deploy --only firestore firebase deploy --only hosting,functions
Deploy sub-targets
firebase deploy --only functions:myFunction firebase deploy --only hosting:my-site firebase deploy --only firestore:rules firebase deploy --only firestore:indexes
Exclude targets
firebase deploy --except functions
With message
firebase deploy --message "v2.3.1 release" Firebase Emulator Suite
Start all configured emulators
firebase emulators:start
Start specific emulators
firebase emulators:start --only auth,firestore,functions
With data import/export
firebase emulators:start --import ./emulator-data --export-on-exit
Run tests against emulators then shut down
firebase emulators:exec "npm test" --only firestore,auth
Enable Functions debugger (Node.js inspector on port 9229)
firebase emulators:start --inspect-functions Local Development Server firebase serve
Hosting + HTTPS Functions
firebase serve --only hosting firebase serve --port 5000 Hosting Commands
Preview channels
firebase hosting:channel:create staging --expires 7d firebase hosting:channel:deploy staging firebase hosting:channel:list firebase hosting:channel:open staging firebase hosting:channel:delete staging --force firebase hosting:clone my-app:live my-app-staging:staging
Multi-site management
firebase hosting:sites:list firebase hosting:sites:create new-site-id firebase hosting:disable --site my-old-site Cloud Functions Commands firebase functions:list
List deployed functions
firebase functions:log
View logs
firebase functions:log --only myFunction
Filter by function name
firebase functions:delete myFunction
Delete a function
firebase functions:shell
Local interactive shell
Secrets (2nd gen — replaces functions:config)
firebase functions:secrets:set MY_SECRET firebase functions:secrets:get MY_SECRET firebase functions:secrets:prune
Config (1st gen only)
firebase functions:config:set api.key = "VALUE" firebase functions:config:get Firestore Commands firebase firestore:delete /collection/doc --recursive firebase firestore:indexes firebase firestore:rules:get Realtime Database Commands firebase database:get /path --pretty firebase database:set /path data.json firebase database:push /messages --data '{"text":"Hello"}' firebase database:update /users/uid --data '{"name":"New Name"}' firebase database:remove /path --confirm firebase database:profile --duration 30 Auth Import / Export
Export all users
firebase auth:export users.json
Import users (BCRYPT hashes)
firebase auth:import users.json --hash-algo
BCRYPT
Import users (SCRYPT hashes — Firebase default)
firebase auth:import users.json \ --hash-algo = SCRYPT \ --hash-key = < base64-key
\ --salt-separator = < base64-separator
\ --rounds = 8 \ --mem-cost = 8 Remote Config firebase remoteconfig:get firebase remoteconfig:get --output config.json firebase remoteconfig:versions:list --limit 20 firebase remoteconfig:rollback --version-number 5 App Distribution
Distribute Android APK
firebase appdistribution:distribute app.apk \ --app APP_ID \ --release-notes "Bug fixes and improvements" \ --testers "qa@example.com" \ --groups "qa-team,beta-users"
Manage testers
firebase appdistribution:testers:add alice@example.com --group-alias qa-team firebase appdistribution:testers:remove alice@example.com firebase appdistribution:groups:list Extensions firebase ext:list firebase ext:info firebase/delete-user-data firebase ext:install firebase/delete-user-data firebase ext:configure delete-user-data firebase ext:update delete-user-data firebase ext:uninstall delete-user-data firebase ext:export App Hosting (Next.js / Angular) firebase init apphosting firebase apphosting:backends:create --location us-central1 firebase apphosting:backends:list firebase deploy --only apphosting firebase apphosting:rollouts:create BACKEND_ID --git-branch main Deploy Targets (multi-site / multi-instance)
Apply target name to a resource
firebase target:apply hosting prod-site my-app-prod firebase target:apply storage prod-bucket my-app-bucket firebase target:apply database default my-app-db
Use target in deploy
firebase deploy --only hosting:prod-site
Clear targets
- firebase target:clear hosting prod-site
- Best practices
- Use service accounts for CI/CD
-
- Set
- GOOGLE_APPLICATION_CREDENTIALS
- instead of
- --token
- (deprecated).
- Use
- --only
- in deploy
-
- Never deploy everything blindly in production — always scope with
- --only
- .
- Emulators for development
-
- Always run
- emulators:start
- locally before deploying; use
- --import
- /
- --export-on-exit
- for persistence.
- Preview channels before production
-
- Use
- hosting:channel:deploy
- for staging reviews before
- firebase deploy --only hosting
- .
- Secrets over functions:config
-
- For Cloud Functions 2nd gen, use
- functions:secrets:set
- (Secret Manager) instead of deprecated
- functions:config:set
- .
- --non-interactive
- in scripts
-
- Always add
- --non-interactive
- in automated scripts to avoid hanging on prompts.
- .firebaserc
- in VCS
-
- Commit
- .firebaserc
- (project aliases) but add secrets and service account keys to
- .gitignore
- .
- --debug
- for troubleshooting
- Run any failing command with
--debug
for verbose output.
Troubleshooting
Issue
Solution
command not found: firebase
Run
npm install -g firebase-tools
; check
npm bin -g
is in
PATH
Authentication error in CI
Set
GOOGLE_APPLICATION_CREDENTIALS
to service account JSON path
FIREBASE_TOKEN
warning
Migrate from token-based auth to service accounts
Deploy fails with permission error
Verify service account has required IAM roles (Firebase Admin, Cloud Functions Admin, etc.)
Emulators not starting
Check ports 4000/5000/5001/8080/9000/9099/9199 are available; run
lsof -i :
Functions deploy timeout Use --only functions:specificFunction to deploy one at a time Hosting deploy not reflecting changes Check firebase.json public directory and ignore patterns ext:install fails Check extension ID format: publisher/extension-id ; try --debug Database permission denied Verify database rules and that CLI auth account has access References Firebase CLI Reference — official full command reference Full Command Reference — complete options and flags for all commands Install Scripts — install.sh (setup) · deploy.sh (deployment helper) · emulators.sh (emulator management) firebase-tools GitHub — source code and changelog Firebase CLI Release Notes — version history Auth Import/Export Reference — hash algorithm details Hosting Preview Channels — staging workflow Emulator Suite Configuration — emulator setup