Я написал свои функции 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
}