{"id":47690,"library":"firemorph","title":"firemorph","description":"Firestore migration tool (v1.0.2, beta pre-release) for managing schema changes in Firestore databases. Provides a CLI to create, run, and rollback migrations with batch operations. Key differentiators: lightweight (53KB minzip), TypeScript-first, supports Firebase Emulator for local testing. Caution: still prerelease and subject to breaking changes. Distributed via npm as ESM package.","status":"active","version":"1.0.2","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","firestore","firebase","migration","db","typescript"],"install":[{"cmd":"npm install firemorph","lang":"bash","label":"npm"},{"cmd":"yarn add firemorph","lang":"bash","label":"yarn"},{"cmd":"pnpm add firemorph","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"required for Firestore interactions","package":"firebase-admin","optional":false},{"reason":"CLI argument parsing","package":"commander","optional":false}],"imports":[{"note":"ESM-only; named export. TypeScript types included.","wrong":"const firemorph = require('firemorph')","symbol":"firemorph","correct":"import { firemorph } from 'firemorph'"},{"note":"Named export for defining migration functions.","wrong":"import Migration from 'firemorph'","symbol":"Migration","correct":"import { Migration } from 'firemorph'"},{"note":"Type-only import for TypeScript users.","wrong":"const { FirestoreMigration } = require('firemorph')","symbol":"FirestoreMigration","correct":"import type { FirestoreMigration } from 'firemorph'"}],"quickstart":{"code":"npx firemorph init\nnpx firemorph create my_migration\nnpx firemorph up","lang":"typescript","description":"Initialize a migration directory, create a new migration file, and apply pending migrations using CLI commands."},"warnings":[{"fix":"Pin to exact version or use lockfile.","message":"Pre-release: breaking changes may occur in minor/patch versions before 1.0.0 stable.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Break migrations into batches under 500 writes.","message":"Firestore batch write limit of 500 operations per batched write, enforce in migration batches.","severity":"gotcha","affected_versions":"all"},{"fix":"Set FIRESTORE_EMULATOR_HOST='localhost:8080' and GCLOUD_PROJECT='your-project-id'.","message":"Environment variables FIRESTORE_EMULATOR_HOST and GCLOUD_PROJECT required for local testing.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'53kb':32 'batch':27 'beta':6 'break':49 'caution':43 'chang':13,50 'cli':19 'creat':21 'databas':16 'db':61 'differenti':30 'distribut':51 'emul':39 'esm':55 'firebas':38,59 'firemorph':1 'firestor':2,15,58 'first':36 'javascript':57 'key':29 'lightweight':31 'local':41 'manag':11 'migrat':3,25,60 'minzip':33 'npm':53 'oper':28 'packag':56 'pre':8 'pre-releas':7 'prereleas':45 'provid':17 'releas':9 'rollback':24 'run':22 'schema':12 'still':44 'subject':47 'support':37 'test':42 'tool':4 'typescript':35,62 'typescript-first':34 'v1.0.2':5 'via':52","created_at":"2026-06-07T16:52:48.716310+00:00","updated_at":"2026-06-07T16:52:48.716310+00:00","problems":[{"fix":"Use import syntax or set 'type': 'module' in package.json.","cause":"Using CommonJS require() on ESM-only package.","error":"Error: Cannot find module 'firemorph'"},{"fix":"Set FIRESTORE_EMULATOR_HOST='localhost:8080' before running firemorph.","cause":"Missing environment variable for local emulator.","error":"Error: FIRESTORE_EMULATOR_HOST not set"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":null,"npm":"firemorph","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}