์ฝ์ ์ฐฝ์ ํตํด ํ๋ก๊ทธ๋จ์ ์ํํ๋ ํ๊ฒฝ
๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ฐ๋๋๋ ๊ฐ๋
โ ์ฝ์ ๋ช ๋ น์ด
node๋ npm, nodemon์ฒ๋ผ ์ฝ์์ ์ ๋ ฅํ์ฌ ์ด๋ค ๋์์ ์ํํ๋ ๋ฌธ์ฅ
ํจํค์ง๋ช ๊ณผ ์ฝ์ ๋ช ๋ น์ด๋ ๋ค๋ฅด๊ฒ ๋ง๋ค ์ ์๋ค
//package.json
{
...
"license": "ISC",
"bin": {
"cli": "./index.js"
}
bin : ์ฝ์ ๋ช ๋ น์ด์ ํด๋น ๋ช ๋ น์ด๋ฅผ ํธ์ถํ ๋ ์คํ ํ์ผ์ ์ค์ ํ๋ ๊ฐ์ฒด
ํ์ฌ ์ฝ์ ๋ช ๋ น์ด๋ cli, ์คํ ํ์ผ์ index.js๋ก ์ง์
$ npm i -g //์ฝ์์์ ํ์ฌ ํจํค์ง ์ ์ญ ์ค์น
$ cli //index.js ์คํ
๋ ธ๋์ ๋ด์ฅ ๋ชจ๋ readline ์ฌ์ฉ
//index.js
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question('๋ฐฅ ๋จน์๋์? (y/n) ', (answer) => {
if (answer === 'y') {
console.log('๋ง์์๊ฒ ์ด์');
} else if (answer === 'n') {
console.log('์ผ๋ฅธ ๋์ธ์');
} else {
console.log('y ๋๋ n๋ง ์
๋ ฅํ์ธ์');
}
rl.close(); // ์
์ถ๋ ฅ ๊ณผ์ ํ ๋ฉ์๋ ์ข
๋ฃ
});
process.stdin ๊ณผ process.stdout : ์ฝ์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ด๋นํ๋ ์คํธ๋ฆผ
readline ๋ชจ๋ : ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ ๋ฐ๊ณ ๊ทธ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ ์ถ๋ ฅ
console.clear ๋ฉ์๋ : ์ฝ์ ๋ด์ฉ์ ์ง์
CLI ํ๋ก๊ทธ๋จ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
commander๋ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ์ข ๋ ์ง๊ด์ ์ด๋ฉฐ, inquirer์ CLI ํ๋ก๊ทธ๋จ๊ณผ ์ฌ์ฉ์ ๊ฐ์ ์ํธ์์ฉ์ ๋์
๊ธฐ๋ณธ ๋ช ๋ น์ด(cli)๋ * ๋ช ๋ น์ด์ ํด๋นํ์ง ์๋๋ค
์ด ๋ช ๋ น์ด์ ๋์์ ์ถ๊ฐํ๋ ค๋ฉด * ๋ช ๋ น์ด๋ฅผ ์์ ๊ณ ์ผ๋ฐ action์์ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํจ
inquirer ๊ฐ์ฒด๋ prompt ๋ฉ์๋๋ฅผ ๊ฐ์ง๋๋ฐ, ํด๋น ๋ฉ์๋๋ ์ธ์๋ก ์ง๋ฌธ ๋ชฉ๋ก์ ๋ฐ๊ณ ํ๋ก๋ฏธ์ค๋ฅผ ํตํด ๋ต๋ณ์ ๋ฐํํ๋ค
โ ์ง๋ฌธ ๊ฐ์ฒด์ ์์ฑ
์ฝ์ ํ ์คํธ์ ์คํ์ผ์ ์ถ๊ฐํ ๋ ์ฌ์ฉ
chalk.rgb(12, 34, 56)(ํ ์คํธ) ๋๋ chalk.hex('#123456')(ํ ์คํธ) ์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅ
chalk.red.bgBlue.bold(ํ ์คํธ) ์ฒ๋ผ ๊ธ์์, ๋ฐฐ๊ฒฝ์, ์คํ์ผ ๋์ ์ง์ ๊ฐ๋ฅ
[Node.js] 16์ฅ ์๋ฒ๋ฆฌ์ค ๋ ธ๋ ๊ฐ๋ฐ (0) | 2023.01.12 |
---|---|
[Node.js] 15์ฅ AWS์ GCP๋ก ๋ฐฐํฌํ๊ธฐ (0) | 2023.01.05 |
[Node.js] 12์ฅ ์น ์์ผ์ผ๋ก ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์กํ๊ธฐ (0) | 2022.12.22 |
[Node.js] 11์ฅ ๋ ธ๋ ์๋น์ค ํ ์คํธํ๊ธฐ (0) | 2022.12.01 |
[Node.js] 10์ฅ ์น API ์๋ฒ ๋ง๋ค๊ธฐ (0) | 2022.11.24 |