NodeJS 및 npm을 사용하여 CLI 도구 만들기(2부)

2022년 9월 21일

npm 및 NodeJS로 CLI 도구를 만들기 위한 최소한의 요구 사항에 대해 이야기했습니다.

요약하면 우리의 목표는 두 개의 파일을 갖는 것입니다.
  • package.json , "name" , "bin""version" 를 포함하는 "fields" .
  • path/to/bin/index.js ("shebang"노드를 포함해야 함)

  • 이 블로그 게시물에서는 웹팩이나 롤업과 같은 모든 종류의 번들러 설정에 대한 걱정 없이 최신ECMAScript 기능을 사용하여 빠르게 시작하고 플랫폼 간에 100% 호환되도록 만드는 방법에 대해 이야기하고 싶습니다.

    어떻게?

    타입스크립트 사용하기!



    TypeScript를 사용하면 코드를 JavaScript "바이너리"( not really a binary )로 묶고 최신ECMAScript 기능에 액세스할 수 있으며 다른 개발자가 우리 도구로 쉽게 작업할 수 있도록 유형을 내보낼 수 있습니다.

    먼저 유형 및 빌드 스크립트를 포함하도록 package.json를 수정합니다(Node CLI 최소 실행 가능 제품 참조).
    ./package.json
    {
      "name": "cli-tool",
      "version": "1.0.0",
      "fields": ["./dist/"],
      "bin": "./dist/index.js",
    + "types": "./dist/index.d.ts",
    + "script": {
    +   "build": "rm -rf dist && tsc index.ts --declaration --allowJs --outDir dist"
    + }
    }
    


    둘째, 소스 코드가 포함된 index.ts 파일을 만듭니다.
    ./index.ts
    #!/usr/bin/env node
    
    export default function ourTool(options: { message: string }) {
      console.log(`Hello ${options.message}`);
    }
    
    if (require.main === module) {
      // run directly from the command line as in "node xxx.js"
      const program = require("commander");
      const defaults = { message: "World" };
    
      program
        .version("0.1.0")
        .option("-m, --message [value]", "Message", defaults.message)
        .parse(process.argv);
    
      const options = program.opts();
    
      ourTool(options);
    } else {
      // probably loaded by as a module or something else.
    }
    

    require.main === module를 사용하여 스크립트가 명령으로 실행되고 있는지 감지하고 그렇지 않으면 모듈로 가져오고 있다고 가정합니다.

    또한 CLI 도구의 동작을 쉽게 정의하는 데 도움이 되도록 commander 을 사용하고 있습니다.

    용법



    이제 다음과 같이 도구를 빌드하고 실행할 수 있습니다.

    $ npm run build
    $ node ./dist/index.js
    


    https://www.npmjs.com/에 게시하고 설치하여 npx와 함께 사용할 수도 있습니다.

    $ npm i -g cli-tool
    
    $ cli-tool --version
    0.1.0
    
    $ cli-tool
    Hello World
    
    $ cli-tool -m Pablo
    Hello Pablo
    
    $ npx cli-tool --help
    Usage: cli-tool [options]
    
    Options:
      -V, --version          output the version number
      -m, --message [value]  Message (default: "World")
      -h, --help             output usage information
    


    결론 / 다음은?



    단일 도구(예: TypeScript)를 사용하여 MVP를 만들고 우리를 설정하고 실행할 수 있다는 것은 파워 개발자에게 필수적이며 과소평가되었습니다.

    또한 마법(Babel, Webpack, Rollup 등)을 피하고 컴파일러를 사용하여 코드를 묶는 데에만 집중하기 때문에 이제 NodeJS가 작동하는 데 필요한 기본 요소를 이해하기가 더 쉬워졌습니다. 이는 초보 NodeJS 개발자에게 매우 유용합니다.

    좋은 웹페이지 즐겨찾기