CLI 명령어 추가하기
Node.js에는 cli 명령어를 추가할 수 있다.
package.json의 bin에 명령어와 해당 명령어 입력 시, 실행될 로직을 추가하면 된다.
{
...,
"bin": {
"[명령어]": "[실행 로직]"
}
}
예를 들어, 아래와 같이 test.js 실행 파일을 생성하고 설정한 'test'라는 명령어를 통해 실행한다고 해보자.
#! /usr/bin/env node
console.log(process.argv);
- test.js
{
"bin": {
"my-test": "test.js"
}
}
- package.json
package.json을 수정한 후에는 `npm -g i` 명령어로 업데이트된 package.json을 적용해주어야 한다.
등록한 명령어를 사용해 보자.
$ my-test test1 test2 test3
- bash에 명령어 입력하기
위와 같이 명령어를 입력하면 아래와 같은 결과가 도출된다.
# 첫 번째와 두 번째는 node와 file 실행 경로, 이후부터 입력한 값이 들어옴
[
'C:\\Program Files\\nodejs\\node.exe',
'C:\\실행 경로',
'test1',
'test2',
'test3'
]
- 실행 결과
예제
이제 script를 수정하여 프로젝트에 새로운 파일을 생성하는 에제를 생성해 보자.
#! /usr/bin/env node
import { existsSync, mkdirSync, writeFileSync } from "fs";
// 명령어를 두 개 이하로 작성했을 경우,
if (process.argv.length < 3) {
console.log("project 이름을 작성해주세요!");
process.exit(1);
}
// 명령어를 세 개 이하로 작성했을 경우,
if (process.argv.length < 4) {
console.log("file 이름을 작성해주세요!");
process.exit(1);
}
const PROJECT_NAME = process.argv[2];
const FILE_NAME = process.argv[3];
(async () => {
try {
const isExistProject = existsSync(PROJECT_NAME);
// 이미 존재하는 프로젝트일 경우, 해당 이름으로 된 파일이 없으면 생성, 있으면 error message
if (isExistProject) {
process.chdir(PROJECT_NAME); // === cd PROJECT_NAME
const isExistFile = existsSync(FILE_NAME);
if (isExistFile) {
console.log(
`${FILE_NAME}는 이미 존재하는 파일입니다.`
);
EXIT();
} else {
writeFileSync(FILE_NAME, 'new file!');
console.log(`${PROJECT_NAME}을 생성했습니다!`);
}
} // 존재하지 않는 프로젝트일 경우, 프로젝트 생성 후, 파일 생성
else {
mkdirSync(PROJECT_NAME);
process.chdir(PROJECT_NAME);
writeFileSync(FILE_NAME, 'new file!');
console.log(`${PROJECT_NAME}을 생성했습니다!`);
}
} catch (error) {
console.log(error);
}
})();
- 새로운 파일을 생성하는 script 예제
등록한 'my-test'라는 명령어로 실행시킨 결과이다.


새로운 project와 file이 잘 생성된 것을 확인할 수 있다.
이 cli 명령어를 통해 반복적인 작업들을 단순화시킬 수 있을 것 같다.
728x90
'project' 카테고리의 다른 글
[npm] npm에 내 package 배포하기 (feat. npx) (0) | 2023.01.07 |
---|---|
[Node.js] npm으로 create-react-app 설치하기 (npm vs npx) (0) | 2023.01.02 |
[Node.js] TypeScript에서 import 사용하기 (ESModule) (0) | 2023.01.01 |
[Node.js] typescript와 ts-node 설치하기 (0) | 2023.01.01 |