Firebase-tools: firebase-tools๋ฅผ ๋ชจ๋“ˆ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ ํ™•์žฅ

์— ๋งŒ๋“  2017๋…„ 04์›” 29์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: firebase/firebase-tools

CLI ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋ช…๋ น์€ ๋ชจ๋“ˆ๋กœ ๋กœ๋“œํ•  ๋•Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํŒŒ์•…ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น ๋“ฑ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋œ ๋ฌธ์„œ๊ฐ€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”(๋˜๋Š” ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์ง€๋งŒ ํ•ด๊ฒฐํ•œ) ์งˆ๋ฌธ:

  • tools.functions.config.get ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ‚ค ๋ชฉ๋ก์„ ์ธ์‡„ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ธฐ๋Šฅ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ฐฐํฌ๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์–ป๋Š” ๋ฐฉ๋ฒ•

์ด๊ฒƒ์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ: ์‹ค์ œ๋กœ cloudfunctions.js, api.js ๋ฐ auth.js๋ฅผ ํŒŒํ—ค์ณ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ firebase-tools์—๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ง ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ €๋„ ์—ฌ๊ธฐ์„œ ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
@SJAnderson ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? _ํŠนํžˆ ๊ตฌ์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ(์žˆ๋Š” ๊ฒฝ์šฐ ์„ค์ •)_ ๐Ÿ™

๋ชจ๋“  4 ๋Œ“๊ธ€

์ƒ˜ํ”Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค

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

๊ทธ๋Ÿฌ๋‚˜ ์ž‘๋™ํ•˜๋ ค๋ฉด firebase-tools(-g ์ œ์™ธ)๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

client.database.get('/app-settings/test').then((data) => {
    console.log(data);
}).catch(function (err) {
    console.log(err);
});

๋ฌธ์„œ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

TypeError: Cannot create property 'project' on string '/app-settings/test'
    at Command._prepare (/Users/someone/Documents/test/node_modules/firebase-tools/lib/command.js:104:19)

์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์ ์ ˆํ•œ ์ƒ˜ํ”Œ ์„ธํŠธ๊ฐ€ ์ข‹์Šต๋‹ˆ๋‹ค.

์ €๋„ ์—ฌ๊ธฐ์„œ ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
@SJAnderson ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? _ํŠนํžˆ ๊ตฌ์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ(์žˆ๋Š” ๊ฒฝ์šฐ ์„ค์ •)_ ๐Ÿ™

๋‚˜๋Š” ์†Œ์Šค๋ฅผ ํŒŒํ—ค์น  ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ๊ณผ ์”จ๋ฆ„ํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์ด ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ์ˆ˜๋Š” ํ‰์†Œ์™€ ๊ฐ™์ด ํ•จ์ˆ˜์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
  • ์˜ต์…˜(--foo bar)์€ ์˜ต์…˜ ๊ฐ์ฒด์˜ ์ผ๋ถ€๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ต์…˜ ๊ฐœ์ฒด๋Š” _last_ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ญ์ƒ ์ „์—ญ ์˜ต์…˜์„ ๋ช…๋ น ์˜ต์…˜๊ณผ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์—ญ ์˜ต์…˜์€ ๋ช…๋ น์ค„๊ณผ ๋™์ผํ•˜์ง€๋งŒ ์ถ”๊ฐ€๋กœ cwd
  • ์ฝœ๋ก ์ด ์žˆ๋Š” ๋ช…๋ น์€ client.<command>.<subcommand> ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์˜ˆ:

firebase target hosting --project foo
==>
client.target("hosting", { project: foo})

firebase deploy --only hosting  --token $FIREBASE_TOKEN
==>
client.deploy({ only: 'hosting', token: process.env.FIREBASE_TOKEN })

firebase target:apply mytype mytarget
==>
client.target.apply('mytype', 'mytarget')     // No options added!

๋˜ํ•œ process.env.FIREBASE_TOKEN ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋…ธ๋“œ ์ฝ”๋“œ์— token ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ์ž๋™์œผ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. HTH

์ด ํŒŒ์ผ ๋ฐ ๋ช…๋ น ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค.
https://github.com/firebase/firebase-tools/blob/master/src/commands/index.js

@jesperp ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด์— ๋Œ€ํ•œ ๋‹ต์„ '์•Œ๊ณ  ์žˆ๋Š”' ์‚ฌ๋žŒ์ด๋ผ๋„ ๋ฌธ์„œ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์žŠ์—ˆ์„ ๋•Œ ๋‹ต๋ณ€์„ ์ฐธ๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰