В базовом проекте Firebase Functions файл package.json создается в папке функций.Теперь мы собираемся использовать CircleCI для нашего проекта.Чтобы заставить этот CI работать, package.json должен находиться в верхней папке вашего репозитория, а не в любой другой подпапке, как показано в этом посте здесь: https://discuss.circleci.com/t/cant-run-npm-install/19012
Теперь, если я переместу файл вroot и исправляя все пути, я могу построить и использовать lint в проекте, но развертывание завершается с ошибкой, что у firebase нет пути к каталогу проекта.Похоже, что в firebase-tools есть жестко закодированный метод, который предотвращает перемещение файла package.json за пределы папки функций.
Если я продублирую package.json и верну его обратно в папку функцийвсе работает нормально, но это не решение.
Вот моя желаемая структура:
myproject
|
+- .firebaserc
+- firebase.json
+- package.json
+- tsconfig.json
+- tslint.json
|
+- functions/
|
+- src/
| |
| +- index.ts
|
+- lib/
|
+- index.js
+- index.js.map
package.json
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "npm run build && firebase serve --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"main": "functions/lib/index.js",
"dependencies": {
"firebase-admin": "~5.12.0",
"firebase-functions": "^1.0.1"
},
"devDependencies": {
"tslint": "^5.8.0",
"typescript": "^2.5.3"
},
"private": true
}
tsconfig.json
{
"compilerOptions": {
"lib": ["es6"],
"module": "commonjs",
"noImplicitReturns": true,
"outDir": "./functions/lib",
"sourceMap": true,
"target": "es6"
},
"compileOnSave": true,
"include": [
"./functions/src"
]
}
Кто-нибудь уже пробовал Firebase Functions с CircleCI или имеет какое-либо представление о том, как заставить это работать?