Различные точки входа в package.json для локальной среды против облачной среды - PullRequest
0 голосов
/ 06 мая 2018

Я написал свои функции Firebase в коде ES2017, который мне пришлось переносить, так как я не могу развернуть функции с помощью ES2017 JavaScript. Насколько я понимаю, firebase serve обслуживает функции, выполняемые в моей локальной среде (в которой используется ES2017), а firebase deploy развертывает функции в облаке (без ES2017).

Перед развертыванием я npm run prepare и babel беру мой файл index.js в основную папку, переносит его и помещает в папку / dist вместе с некоторыми файлами конфигурации.

Чтобы развернуть firebase из папки ./dist, я настроил точку входа "main": "./dist/index.js" в package.json. Тем не менее, это означает, что когда я хочу firebase serve для своей локальной среды, я передаю перенесенные функции из папки ./dist. Поэтому мне приходится постоянно переключаться между "main": "index.js" и "main": "./dist/index.js" в зависимости от того, хочу ли я обслуживать функции локально или развернуть перенесенные функции.

Несмотря на то, что я указал, где я хочу обслуживать и развертывать, вот так:

  "scripts": {
    "lint": "./node_modules/.bin/eslint .",
    "serve": "firebase serve --only functions",
    "shell": "firebase experimental:functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions/dist",
    "logs": "firebase functions:log"
  }

Весь мой файл package.json:

{
  "main": "./dist/index.js",
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "lint": "./node_modules/.bin/eslint .",
    "serve": "firebase serve --only functions",
    "shell": "firebase experimental:functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions/dist",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "babel-runtime": "^6.26.0",
    "cors": "^2.8.4",
    "cross-fetch": "^2.1.0",
    "firebase-admin": "^5.8.2",
    "firebase-functions": "^1.0.1",
    "moment": "^2.22.1"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.6.1",
    "eslint": "^4.12.0",
    "eslint-plugin-promise": "^3.6.0"
  },
  "scripts": {
    "prepare": "babel ./*.js --retain-lines -d ./dist && cp -a ./private ./dist/private",
    "lint": "./node_modules/.bin/eslint --max-warnings=0 ."
  },
  "private": true
}
...