Node로 아름답고 간단한 CLI 앱을 만드는 방법

내면의 Sindre Sohrus를 전달하고 Node를 사용하여 아름답고 단순한 CLI 앱을 제공하십시오.

명령줄 앱은 반복적인 작업을 패키징하는 깔끔한 방법입니다. 이것은 몇 가지 도구를 안내합니다
CLI 앱을 빌드하는 데 유용합니다.
  • The idea 💡
  • Piping to the command line 🚇
  • Dealing with sequential actions ✨
  • Executable JavaScript files 🦅
  • Adding package binaries 📦
  • Publishing to npm 🚀

  • Subscribe 받은 편지함에서 바로 최신 게시물을 받을 수 있습니다(누구보다 먼저).

    아이디어 💡



    병합/리베이스할 때 항상 문제를 일으키는 파일은 패키지 잠금입니다.
    package-lock.json 파일을 삭제하고 재생성(npm install)하고 git 인덱스에 추가하는 간단한 유틸리티를 만드는 방법을 살펴보겠습니다.

    https://github.com/HugoDF/fix-package-lock에서 찾을 수 있으며 npx fix-package-lock를 사용하여 실행합니다.

    커맨드 라인으로 파이핑 🚇



    시작하려면 "a better execa"로 설명되는 Sindre Sohruschild_process의 패키지를 활용합니다. 다음 스니펫이 작동하려면 npm install --save execa를 실행합니다.
    index.js
    const execa = require('execa');
    
    execa('ls').then(result => console.log(result.stdout));
    



    node index.js
    index.js
    node_modules
    package-lock.json
    package.json 
    


    순차적 작업 다루기 ✨


    package-lock를 다시 생성하려면 먼저 삭제한 다음 npm install를 실행해야 합니다.

    이를 위해 Listr 을 사용할 수 있으며 다음과 같은 작업을 수행할 수 있습니다.



    실행npm install --save listr하고 다음과 같이 레버리지 Listr를 추가합니다.
    index.js :

    const execa = require('execa');
    const Listr = require('listr');
    
    new Listr([
      {
        title: 'Removing package-lock',
        task: () => execa('rm', ['package-lock.json'])
      },
      {
        title: 'Running npm install',
        task: () => execa('npm', ['install'])
      },
      {
        title: 'Adding package-lock to git',
        task: (ctx, task) =>
            execa('git', ['add', 'package-lock.json'])
            .catch(() => task.skip())
      }
    ]).run();
    


    이제 node index.js의 출력은 다음과 같습니다.
    `node index.js` output

    Listrexecanpm install 호출과 같이 Promise를 반환하는 장기 실행 작업입니다.

    Observable을 사용하여 변경되는 메시지를 표시할 수도 있습니다. 자세한 내용은 the Listr docs을 참조하십시오.

    실행 가능한 JavaScript 파일 🦅


    ./index.js 대신 node index.js를 사용하여 스크립트를 실행할 수 있는 것이 이상적입니다.

    이렇게 하려면 다음과 같은 UNIX 시스템에서 실행할 수 있는 파일이 필요합니다. chmod +x . 그래서

    chmod +x index.js
    


    그런 다음 다음 해시뱅을 사용하여 파일 실행을 시도하는 방법을 시스템에 알려야 합니다.

    #!/usr/bin/env node
    

    index.js에 추가하면 다음과 같이 됩니다.

    #!/usr/bin/env node
    const execa = require('execa');
    const Listr = require('listr');
    
    new Listr([
      {
        title: 'Removing package-lock',
        task: () => execa('rm', ['package-lock.json'])
      },
      {
        title: 'Running npm install',
        task: () => execa('npm', ['install'])
      },
      {
        title: 'Adding package-lock to git',
        task: (ctx, task) =>
            execa('git', ['add', 'package-lock.json'])
            .catch(() => task.skip())
      }
    ]).run();
    


    이제 다음을 사용하여 실행할 수 있습니다.

    ./index.js
    


    패키지 바이너리 추가



    npm에는 다음과 같이 사용할 수 있는 bin 필드가 있습니다(package.json에서).

    {
      "name": "beautiful-cli",
      "version": "1.0.0",
      "description": "A simple CLI",
      "main": "index.js",
      "bin": {
        "fix-package-json": "./index.js"
      }
      "dependencies": {
        "execa": "^0.10.0",
        "listr": "^0.14.1"
      }
    }
    


    npm 🚀에 게시



    np
    패키지, 매우 간단합니다.

    힌트: 게시하려는 패키지에서 실행npx np
    전체 패키지는 https://github.com/HugoDF/fix-package-lock에서 찾을 수 있으며 npx fix-package-lock를 사용하여 실행합니다.

    Subscribe 받은 편지함에서 바로 최신 게시물을 받을 수 있습니다(누구보다 먼저).

    좋은 웹페이지 즐겨찾기