使用多个项目时,Firebase部署到错误的主机
我有两个firebase项目:使用多个项目时,Firebase部署到错误的主机,firebase,firebase-hosting,firebase-cli,Firebase,Firebase Hosting,Firebase Cli,我有两个firebase项目:myapp用于prod,以及myapp dev用于dev环境。 我首先使用firebase cli用“myapp”初始化我的项目,因此所有文件都是用它生成的,包括托管资源myapp(因此我可以将我的应用部署到myapp.web.app) 然后,我添加了第二个firebase项目(“myapp-dev”)。我负责这些 firebase use --add myapp-dev # I have selected the right myapp-dev firebase
myapp
用于prod,以及myapp dev
用于dev环境。我首先使用firebase cli用“myapp”初始化我的项目,因此所有文件都是用它生成的,包括托管资源
myapp
(因此我可以将我的应用部署到myapp.web.app
)
然后,我添加了第二个firebase项目(“myapp-dev”)。我负责这些
firebase use --add myapp-dev # I have selected the right myapp-dev firebase project and set `dev` as short name
firebase target:apply hosting myapp-dev myapp # note here that I also use name "myapp" as resource
我已经手动更改了我的.firebasesrc
,因为我希望开发项目是默认的
因此,我的.firebasesrc
如下所示
{
"projects": {
"default": "myapp-dev",
"prod": "myapp"
},
"targets": {
"myapp": {
"hosting": {
"myapp": [
"myapp"
]
}
},
"myapp-dev": {
"hosting": {
"myapp": [
"myapp"
]
}
}
}
}
和firebase.json
{
"hosting": [
{
"target": "myapp",
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
],
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]
}
}
现在,当我运行这些行时,webapp被部署到prod env,而函数被部署到dev env
firebase use myapp-dev
firebase deploy
编辑
运行firebase目标:应用托管myapp myapp dev
帮助 我认为您的配置应该是这样的
文件.firebassrc
"targets": {
"myapp-dev": {
"hosting": {
"myapp-dev": [
"myapp-dev"
],
"myapp": [
"myapp"
]
}
}
}
文件firebase.json:
"hosting": [
{
"target": "myapp-dev",
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
{
"target": "myapp",
"public": "dist/myapp", /* folder */
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
]
然后使用target
部署在我的案例中,我将同一个应用部署到两个不同的环境(开发和生产)。关于这个场景的文档不是很清楚,为了获得正确的配置,我们花了一些时间
.firebaserc
{
"projects": {
"production": "myapp-prod",
"development": "myapp-dev"
},
"targets": {
"myapp-prod": {
"hosting": {
"myapp": [
"site-name-prod"
]
}
},
"myapp-dev": {
"hosting": {
"myapp": [
"site-name-dev"
]
}
}
}
}
firebase.json
{
"hosting": [{
"target": "myapp",
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [ {
"source": "**",
"destination": "/index.html"
} ]
}]
}
部署到生产运行
firebase use production
firebase deploy
部署发展
firebase use development
firebase deploy
在项目中运行firebase deploy时,它将使用firebase.json的hosting部分中指定的目标来部署到.firebaserc中目标的hosting部分中指定的站点名称
{
"projects": {
"production": "myapp-prod",
"development": "myapp-dev"
},
"targets": {
"myapp-prod": {
"hosting": {
"myapp": [
"site-name-prod"
]
}
},
"myapp-dev": {
"hosting": {
"myapp": [
"site-name-dev"
]
}
}
}
}