Node.js로 CLI 도구 구축 시작하기
12894 단어 toolingnodebeginnersjavascript
프로젝트 초기화
프로젝트용 폴더를 만들고 이 폴더에서
npm init
를 실행합니다. 이렇게 하면 프로젝트의 루트에 package.json
파일이 생성됩니다. -y
플래그를 전달하여 기본값을 수락할 수 있습니다.npm init -y
{
"name": "cli-course",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
기본적으로 프로젝트의 모듈 시스템은 CommonJS 또는 CJS가 됩니다. CJS의 가져오기 및 내보내기는 다음과 같이 작동합니다.
var myModule = require("my-module");
var result = myModule.doSomething();
module.exports = {
result,
};
ECMAScript 모듈 또는 ESM에서는 다음과 같이 작동합니다.
import myModule from "my-module";
export const result = myModule.doSomething();
ESM을 사용하려면
package.json
속성을 type
로 설정하여 module
에서 활성화해야 합니다.{
"name": "cli-course",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module"
}
인수 구문 분석
노드에서 전역적으로 process 변수에 액세스할 수 있습니다.
process
의 내용을 콘솔에 인쇄하면 많은 정보를 볼 수 있습니다. argv
속성에서 스크립트에 전달된 인수에 액세스할 수 있습니다. 예를 들어 node index.js
를 실행하면 다음과 유사한 내용이 인쇄됩니다.console.log(process.argv);
/**
* Output:
* ["/usr/local/bin/node", "/projects/node-cli-course/index.js"]
*/
보시다시피 배열의 처음 두 요소는 노드 실행 파일의 경로와 스크립트의 경로입니다. 명령에 더 많은 인수를 전달하면
argv
배열에 추가됩니다. 예를 들어 node index.js --name=Jose
를 실행하면 다음과 같이 인쇄됩니다.["/usr/local/bin/node", "/projects/node-cli-course/index.js", "--name=jose"]
어떤 인수가
-
문자로 시작하는지 확인하는 스크립트에 전달된 플래그를 쉽게 구문 분석할 수 있습니다.const flags = [];
process.argv.forEach((arg) => {
if (arg.startsWith("-")) {
flags.push(arg.replaceAll("-", ""));
}
});
(
node index.js --hi
) 명령을 사용하면 flags array
는 ['hi']
와 같습니다.그런 다음 깃발로 무언가를 할 수 있습니다.
if (flags.includes("hi")) {
console.log("Hello World!");
}
사용자 입력 읽기
노드에는 Readline이라는 사용자 입력을 읽는 내장 모듈이 있습니다.
사용자 입력을 읽으려면 새 항목
interface
을 만들고 이를 입력 및 출력과 연결해야 합니다. 이 경우 process
변수에서 직접 사용할 수 있는 표준 입력 및 출력을 사용할 것입니다. 인터페이스 개체를 사용하여 사용자에게 매우 쉽게 질문할 수 있습니다.완료되면 프로세스를 중지하기 위해 인터페이스를 닫아야 합니다.
import * as readline from "node:readline/promises";
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const answer = await rl.question("What's your name? ");
console.log(`Your name is ${answer}`);
rl.close();
/**
* Output:
* What's your name? Jose
* Your name is Jose
*/
스크립트를 전역적으로 실행 가능하게 만들기
스크립트를 전역적으로 실행 가능하게 만드는 쉬운 방법은 스크립트를 실행할 새 파일을 만드는 것입니다.
이 새 파일의 이름은 명령 이름과 같아야 합니다. 예를 들어, 우리의 경우 명령 이름을 사용하고 싶습니다
cli-course
. 그래서 내 스크립트 파일을 실행하는 cli-course
라는 파일을 만들었습니다.node index.js
그런 다음
chmod +x cli-course
를 실행하여 새 파일을 실행 가능하게 만듭니다.마지막으로 프로젝트의 경로를
PATH
환경 변수에 추가합니다.export PATH=$PATH:/path/to/project/
이제 터미널에
cli-course
를 입력하여 스크립트를 전역적으로 실행할 수 있습니다.$ cli-course
What's your name? Jose
Your name is Jose
결론
다음 단계에 따라 Node.js로 기본 CLI 도구를 만들 수 있습니다. 우리는 콘솔에 텍스트를 인쇄하는 방법, 인수를 구문 분석하는 방법, 사용자 입력을 읽는 방법 및 스크립트를 전역적으로 실행 가능하게 만드는 방법을 배웠습니다.
이것이 충분하지 않으면 Inquirer.js 과 같은 라이브러리를 사용할 수 있습니다. 이 라이브러리를 사용하여 다음을 수행할 수 있습니다.
도구에 외부 라이브러리가 필요한지 여부는 사용자가 결정해야 합니다.
자원
Reference
이 문제에 관하여(Node.js로 CLI 도구 구축 시작하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jmalvarez/get-started-building-cli-tools-with-nodejs-4eg7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)