diff --git a/dev.sh b/dev.sh index 8d9bd2bc..178e20e8 100755 --- a/dev.sh +++ b/dev.sh @@ -4,23 +4,42 @@ ENV=${1:-dev} case $ENV in dev) FIREBASE_PROJECT=dev - NEXT_ENV=DEV ;; + NEXT_ENV=DEV + EMULATOR=false ;; prod) FIREBASE_PROJECT=prod - NEXT_ENV=PROD ;; + NEXT_ENV=PROD + EMULATOR=false ;; + localdb) + FIREBASE_PROJECT=dev + NEXT_ENV=DEV + EMULATOR=true ;; *) - echo "Invalid environment; must be dev or prod." + echo "Invalid environment; must be dev, prod, or localdb." exit 1 esac firebase use $FIREBASE_PROJECT -# run all of: local functions, next.js dev server, typechecking on web project -npx concurrently \ - -n FUNCTIONS,NEXT,TS \ - -c white,magenta,cyan \ - "yarn --cwd=functions dev" \ - "cross-env NEXT_PUBLIC_FUNCTIONS_URL=http://localhost:8080 \ +if [ ! -z $EMULATOR ] +then + npx concurrently \ + -n FIRESTORE,FUNCTIONS,NEXT,TS \ + -c green,white,magenta,cyan \ + "yarn --cwd=functions firestore" \ + "cross-env FIRESTORE_EMULATOR_HOST=localhost:8080 yarn --cwd=functions dev" \ + "cross-env NEXT_PUBLIC_FUNCTIONS_URL=http://localhost:8088 \ + NEXT_PUBLIC_FIREBASE_EMULATE=TRUE \ NEXT_PUBLIC_FIREBASE_ENV=${NEXT_ENV} \ yarn --cwd=web serve" \ - "cross-env yarn --cwd=web ts-watch" + "cross-env yarn --cwd=web ts-watch" +else + npx concurrently \ + -n FUNCTIONS,NEXT,TS \ + -c white,magenta,cyan \ + "yarn --cwd=functions dev" \ + "cross-env NEXT_PUBLIC_FUNCTIONS_URL=http://localhost:8088 \ + NEXT_PUBLIC_FIREBASE_ENV=${NEXT_ENV} \ + yarn --cwd=web serve" \ + "cross-env yarn --cwd=web ts-watch" +fi diff --git a/functions/package.json b/functions/package.json index 28547f39..b20a8fd0 100644 --- a/functions/package.json +++ b/functions/package.json @@ -13,6 +13,7 @@ "deploy": "firebase deploy --only functions", "logs": "firebase functions:log", "dev": "nodemon src/serve.ts", + "firestore": "firebase emulators:start --only firestore --import=./firestore_export", "serve": "firebase use dev && yarn build && firebase emulators:start --only functions,firestore --import=./firestore_export", "db:update-local-from-remote": "yarn db:backup-remote && gsutil rsync -r gs://$npm_package_config_firestore/firestore_export ./firestore_export", "db:backup-local": "firebase emulators:export --force ./firestore_export", diff --git a/functions/src/serve.ts b/functions/src/serve.ts index 1049416f..e2f006ff 100644 --- a/functions/src/serve.ts +++ b/functions/src/serve.ts @@ -3,7 +3,7 @@ import * as express from 'express' import { Express } from 'express' import { EndpointDefinition } from './api' -const PORT = 8080 +const PORT = 8088 import { initAdmin } from './scripts/script-init' initAdmin() diff --git a/web/package.json b/web/package.json index 365eccc6..a31dbffa 100644 --- a/web/package.json +++ b/web/package.json @@ -10,7 +10,7 @@ "dev:dev": "yarn devdev", "dev:the": "cross-env NEXT_PUBLIC_FIREBASE_ENV=THEOREMONE yarn dev", "dev:local": "cross-env NEXT_PUBLIC_FUNCTIONS_URL=http://localhost:8080 yarn devdev", - "dev:emulate": "cross-env NEXT_PUBLIC_FIRESTORE_EMULATE=TRUE yarn devdev", + "dev:emulate": "cross-env NEXT_PUBLIC_FIREBASE_EMULATE=TRUE yarn devdev", "build": "next build", "start": "next start", "lint": "next lint",