โ ์๋ฐ๊ฐ ์ ๋ง๋ก Garbage collection ์ ํ๋ค๋ฉด, ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ๋ค์ ์คํ ์ค์ ์๊ธฐ ์์ ์ ์ง์๋ฒ๋ฆด์ง๋ ๋ชจ๋ฅธ๋ค. โ
- Robert Sewell

๋ธ๋ผ์ฐ์ console.log ๊พธ๋ฏธ๊ธฐ
๋ธ๋ผ์ฐ์ ์ฝ์์ CSS ์คํ์ผ์ํธ๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ฒ๊ฑฐ๋กญ๊ธด ํ์ง๋ง ๋ง๋ค๊ธฐ ์ด๋ ต์ง๋ ์๋ค.
console.log('%cHello, world!', 'color: #a4f644; background-color: red;');

%c ์ดํ์ ๊ธ์์๋ ๋ชจ๋ ๊ฐ์ ์คํ์ผ์ด ์ ํ์ง๊ฒ ๋๋ค.
์๋ก์ด ์คํ์ผ์ ์์ฐ๊ณ ์ถ์ผ๋ฉด %c๋ฅผ ๋ ์ฐ๋ฉด ๋๋ค.
ํ๋ก ํธ์ค๋์์๋ ์ ํ ์ด๋ ค์ด ์์ ์ด ์๋๊ธฐ ๋๋ฌธ์, ๋น์ฐํ ๋ฐฑ์ค๋์์๋ ๋๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ ๋ถ๋ค์ด ๋ง์๋ฐ ์๋๋ค.
์ ์ฝ๋์ฒ๋ผ css๊ฐ์ ์ฃผ์ด๋ ์ฌ์ ํ ๋ฐ๋ฅ๋งน๋ฅํ ํ์๊ธ์จ๋ง ๋์ฌ ๊ฒ์ด๋ค. ๋ฐ๋ผ์, ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ฉ์ ํด์ผ ํ๋ค.
๋ ธ๋ console.log ๊พธ๋ฏธ๊ธฐ
ํฐ๋ฏธ๋์์๋ ์๊น์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์ ANSI escape code๋ฅผ ์ฌ์ฉํ๋ค.
๋ค์ ์์ ๋ฅผ ํฐ๋ฏธ๋์ ์ณ๋ณด์
console.log('\x1b[31mHello, world!\x1b[0m');

์ด ์ฝ๋๋ ํฌ๊ฒ ์ธ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๋ค.
- \x1b[31m
- Hello, world! (์ค์ ๋ก ๋ด๊ฐ ์ฐ๊ณ ์ถ์๋ ๋ถ๋ถ)
- \x1b[0m
\x1b[๋ก ์์ํด์ m์ผ๋ก ๋๋๋ ์ฝ๋๊ฐ ๋ฐ๋ก ANSI escape code์ด๋ค.
// red
console.log('\x1b[31m%s\x1b[0m', 'I am red')
// green
console.log('\x1b[32m%s\x1b[0m', 'I am green')
// yellow
console.log('\x1b[33m%s\x1b[0m', 'I am yellow')
// blue
console.log('\x1b[34m%s\x1b[0m', 'I am blue')
// magenta
console.log('\x1b[35m%s\x1b[0m', 'I am magenta')
// cyan
console.log('\x1b[36m%s\x1b[0m', 'I am cyan')
ํ์ง๋ง ์ผ์ผํ ANSI escape code ๋ฌธ์์ด์ ๋ฃ์ด์ ์ฝ์์ ์์ฑํ๋ ์ผ์ ๋งค์ฐ ๋ฒ๊ฑฐ๋กญ๋ค.
๋คํํ npm์ง์์๋ ์ปฌ๋ฌํํ console์ ์ํ ๋ชจ๋์ด ์กด์ฌํ๋ค.
chalk ๋ชจ๋ ์ฌ์ฉ๋ฒ
chalk
Terminal string styling done right
www.npmjs.com

chalk๋ cmd์ ๋์ค๋ log๋ฅผ ์คํ์ผ๋งํ ์ ์๋ ํจํค์ง ์ด๋ค.
colors๋ผ๋ ๋ค๋ฅธ ์ฝ์ ์คํ์ผ๋ง ํจํค์ง๋ ์์ง๋ง, chalk๊ฐ ๊ธฐ๋ฅ๋ ๋ง๊ณ ์๋์ ์ธ ๋ค์ด๋ก๋ ์๋ฅผ ์๋ํ๋ค.

> npm i chalk # ์ค์น
bgcolor๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์ปฌ๋ฌ๋ ์ค ์ ์๊ณ underline์ ํตํด ๋ฐ์ค์ ๊ทธ์ ์๋ ์๋ค.
const chalk = require('chalk');
console.log(chalk.blue('Hello') + ' balmostory' + chalk.red('!'));
console.log(chalk.yellow.bgRed.bold('Hello balmostory!'));
console.log(chalk.red('Hello', chalk.underline.bgBlue('balmostory') + '!'));

ํน์ ES6 ๋ฆฌํฐ๋ด ๋ฌธ๋ฒ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
console.log(chalk`aa bbb ccc`);
console.log(chalk`aa {bold bbb} ccc`);
console.log(chalk`aa {yellow bbb} ccc`);
console.log(chalk`aa {yellow.bold bbb} ccc`);

โ ๏ธ ์ปฌ๋ฌ๊ฐ ๋์ค์ง ์์ ๊ฒฝ์ฐ, ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ค๋ค.
const ctx = new chalk.Instane( { level: 3 } ); // ์ด๊ธฐํ ๋ฌธ๊ตฌ๋ฅผ ์ฌ์ฉํด๋ณธ๋ค.
chalk ์์ ์คํ์ผ ์ง์
ํฐํธ
- reset - ์คํ์ผ ๋ฆฌ์
- bold
- dim - ํฌ๋ช ๋ ๋ฎ์ถค
- italic
- underline
- overline
- inverse- ๋ฐฐ๊ฒฝ์๊ณผ ์ ๊ฒฝ์์ ๋ฐ์
- hidden
- strikethrough
- visible
์์
- black
- red
- green
- yellow
- blue
- magenta
- cyan
- white
- blackBright (alias: gray, grey)
- redBright
- greenBright
- yellowBright
- blueBright
- magentaBright
- cyanBright
- whiteBright
๋ฐฑ๊ทธ๋ผ์ด๋ ์์
- bgBlack
- bgRed
- bgGreen
- bgYellow
- bgBlue
- bgMagenta
- bgCyan
- bgWhite
- bgBlackBright (alias: bgGray, bgGrey)
- bgRedBright
- bgGreenBright
- bgYellowBright
- bgBlueBright
- bgMagentaBright
- bgCyanBright
- bgWhiteBright
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.