Firebase CLI에서 콘솔 처리 중인 꼬르륵꼬르륵 녀석을 빌려쓰다

14724 단어 Node.jsfirebase-tools
Firebase hosting에서 CLI에서 depro를 할 때 콘솔로 꼬르륵거리는 녀석(드러머?)멋있어서 쓰게 해주고 싶어요.

완성품


그럴 거야.

환경 구조


Firebase CLI의 js 소스를 모두 뒤집어 node에서 이동해 보세요.
cli-color 이런 포장을 사용하기 때문에 npm install을 먼저 놓습니다.
그리고 적당히 index.js와 같은 입구점으로 하는 파일을 만듭니다.

Firebase CLI 소스를 찾습니다.


firebase-tools의 출처를 찾은 후deploy/hosting/deploy.js에서 목표 처리를 발견했다.
정말 필요한 곳만 뽑아내면 다음과 같은 느낌이 든다.
var clc = require("cli-color");

var SPINNER = ["", "", "", "", "", "", "", "", "", ""];

var spins = 0;
function _updateSpinner(newMessage) {
    process.stdout.write(clc.erase.line + clc.move.left(9999));
    process.stdout.write(clc.bold.cyan(SPINNER[spins % SPINNER.length] + "  ") + newMessage);
    spins++;
}
적당한 정보로 이걸 호출하세요.
setInterval(() => {
    _updateSpinner("ローディング中です");
}, 200);
빙글빙글 돌다

cli-spinners


Firebase-tools의 포장 의존을 거슬러 올라가면 직접 사용하지 않은 것 같은데cli-spinners라는 매력적인 이름의 포장을 찾았다.
나는 뭔지 알았는데 사실은 JSON 파일spinners.json에 불과했다.
하지만 이 JSON 파일은 보기만 해도 가슴이 두근거린다.
일부분만을 발췌하다
{
    "dots": {
        "interval": 80,
        "frames": [
            "⠋",
            "⠙",
            "⠹",
            "⠸",
            "⠼",
            "⠴",
            "⠦",
            "⠧",
            "⠇",
            "⠏"
        ]
    },
    "circle": {
        "interval": 100,
        "frames": [
            "◜",
            "◠",
            "◝",
            "◞",
            "◡",
            "◟"
        ]
    },
    "bouncing": {
        "interval": 80,
        "frames": [
            "[    ]",
            "[   =]",
            "[  ==]",
            "[ ===]",
            "[====]",
            "[=== ]",
            "[==  ]",
            "[=   ]"
        ]
    },
    "monkey": {
        "interval": 300,
        "frames": [
            "🙈 ",
            "🙈 ",
            "🙉 ",
            "🙊 "
        ]
    },
    "clock": {
        "interval": 100,
        "frames": [
            "🕐 ",
            "🕑 ",
            "🕒 ",
            "🕓 ",
            "🕔 ",
            "🕕 ",
            "🕖 ",
            "🕗 ",
            "🕘 ",
            "🕙 ",
            "🕚 "
        ]
    }
}
아까 했어, 했어.
var clc = require("cli-color");
var spinners = require('cli-spinners');

var spins = 0;
function _updateSpinner(frames, newMessage) {
    process.stdout.write(clc.erase.line + clc.move.left(9999));
    process.stdout.write((frames[spins % frames.length] + "  ") + newMessage);
    spins++;
}

var spinner = spinners.monkey;

setInterval(() => {
    _updateSpinner(spinner.frames, "ローディング中です");
}, spinner.interval);
공연하다

괜찮네.

후기


※ 이 글은 개인적인 견해로 소속된 조직을 대표하지 않습니다.

좋은 웹페이지 즐겨찾기