在基本的Firebase Functions项目中,正在函数文件夹中创建package.json文件 . 现在我们将把CircleCI用于我们的项目 . 要使此CI工作,package.json需要位于您的repo的顶级文件夹中,而不是在此帖子中的任何其他子文件夹中:https://discuss.circleci.com/t/cant-run-npm-install/19012
现在,如果我将文件移动到根并更正所有路径,我就能够在项目上构建和使用lint,但部署失败并出现错误,firebase没有项目的目录路径 . 看起来firebase-tools中有一个硬编码方法阻止了package.json在functions文件夹之外的移动 .
如果我复制package.json并将其放回函数文件夹,一切正常,但这不是一个解决方案 .
Here is my desired structure:
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"
]
}
有没有人已经使用CircleCI尝试过Firebase功能,或者有任何线索如何使其工作?
1 回答
好的,我把这个东西搞定了 . 您需要为CircleCI中的每个命令指定工作目录,使其完全为
~/project/functions
. 现在,CircleCI正在查找package.json文件 .这是我们对于CircleCI的 config.yml :
package.json 带有额外命令
test_ci
,用于CircleCI上的单元测试: