使用Firebase部署前端时自定义打包流程

起因

我目前使用的技术栈是 Vite+React,使用Firebase提供的Hosting服务部署。

每次部署时发现命令行都会执行 vite build,由于我这个项目是需要多环境部署的,当前需要通过环境变量来控制业务的配置。

而每次部署之前自动执行的 vite build 并不会携带自定义的环境变量,所以部署的应用不符合预期。

方案

通过查询资料,发现在firebase的配置文件 firebase.json 里面有一个 source 字段指向了当前项目的 . 目录,所以导致每次都会进行构建,通过下面的修改可以取消构建:

// 注意这里以前是有一个source: "." 就会触发构建,只需要将public指向自己构建的目录即可。
{
    "hosting": {
        "public": "dist",
        "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
        "frameworksBackend": {
            "region": "us-central1"
        }
    }
}

删除 source 字段,添加或者修改public字段,指向 vite build 生成的目录即可。我们只需要在部署之前手动打包,部署的时候仅仅上传打包结果。

下面修改一下 package.json 中的部署脚本,如下:

// package.json
{
    "scripts": {
        "dev": "vite",
        "build": "vite build",
        "deploy": "vite build --mode test && firebase deploy --only hosting --project=test",
        "deploy:prod": "vite build --mode prod && firebase deploy --only hosting --project=prod"
    }
}

现在部署时运行下面的脚本即可。

# 部署测试环境
npm run deploy
# 部署正式环境
npm run deploy:prod

参考链接

留下回复