gpt4 book ai didi

firebase - 使用 firebase-tools 作为节点模块并仅部署规则

转载 作者:行者123 更新时间:2023-12-03 14:58:07 24 4
gpt4 key购买 nike

我正在尝试清理我的构建系统,我想使用 firebase-tools ( Firebase-hosted docs ) 模块。在 CLI 中使用该包的文档已经足够好,但是将其用作节点模块的文档很少(并且深入研究该包的源代码也不是那么简单)。

在撰写本文时,以下是相关文档(仅出现在 GH 存储库中):

作为模块使用

Firebase CLI 也可以通过编程方式用作标准节点模块。这只能在您的机器上完成,不能在 Cloud Functions 中完成。每个命令都作为一个函数公开,该函数接受一个选项对象并返回一个 Promise。例如:

var client = require('firebase-tools');
client.list().then(function(data) {
console.log(data);
}).catch(function(err) {
// handle error
});

client.deploy({
project: 'myfirebase',
token: process.env.FIREBASE_TOKEN,
cwd: '/path/to/project/folder'
}).then(function() {
console.log('Rules have been deployed!')
}).catch(function(err) {
// handle error
});

如您所见,仅包括两个非常基本的示例,并且没有描述可以为每个命令提供的各种选项。

例如,CLI 使用 --only标签(例如 --only database 如果只想推送新规则)。如果我只想部署规则,是否包含 only: "database"在选项中?

示例中的输出确实吹嘘“已部署规则!”成功消息,但没有关于提供给 deploy 的选项似乎表明这只会插入规则(而不是没有 --only 选项的完整部署)!

额外的问题:如果我的规则文件与我想要托管的文件有不同的路径怎么办?我只看到一个 cwd示例中提供的选项。

这里的一些更清晰的文档会有很长的路要走:)

最佳答案

一般准则:

  • 对函数访问使用点分符号(例如 database:get => client.database.get()
  • 将位置参数作为函数参数传递
  • 将选项对象中的全局和命令选项作为最后一个函数参数
  • 所有函数都返回一个 promise

  • 例子:
    firebase --project my-firebase-project database:get /user/setting --output /tmp/out.json

    变成:
    var util = require('util'),
    client = require('firebase-tools');

    client.database.get('/user/setting', {
    project: 'my-firebase-project', // global option
    output: '/tmp/out.json', // global option
    shallow: true // database:get option
    }).then(
    x => console.log(util.inspect(x))
    ).catch(
    e => console.log(util.inspect(e))
    );

    关于firebase - 使用 firebase-tools 作为节点模块并仅部署规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46896802/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com