ZX를 사용하여 JavaScript에서 셸 스크립트 작성

JÉSHOOTS님의 사진 출처: Pexels

나는 과거에 수동 릴리스를 수행해야 하는 프로젝트에서 작업하고 있었습니다. 터미널 명령으로 구성된 짧은 가이드를 따랐습니다. 각각의 새 릴리스에 대해 약간의 조정만 필요했습니다. 간단한 bash 스크립트를 작성하면 큰 이점을 얻을 수 있습니다. 그러나 나는 시스템 관리자가 아니며 쉘 스크립트를 거의 작성하지 않는 경향이 있습니다. 작동하는 bash 스크립트를 디버깅하고 생성하는 데 너무 많은 시간이 걸립니다. 우리는 코드 복사 및 붙여넣기가 더 효율적이라고 결정했습니다.

운 좋게도 Google 개발자도 bash 스크립트 작성을 원하지 않았습니다. 그러나 분명히 그들은 더 나은 것을 만들 수 있는 자원을 얻었습니다.

zx - A tool for writing better scripts

JavaScript와 Bash 명령을 결합하여 복잡한 스크립트를 만들 수 있습니다. 핵심은 NodeJSchild_process 작업을 위한 단순한 래퍼 구문일 뿐입니다.

릴리스 스크립트



빌드 단계는 기본적으로 다음과 같습니다.
  • 명령을 사용하여 package.json의 버전을 범프합니다npm version patch.
  • 새 버전 번호를 releaseCMD에 전달합니다.

  • 이 작업을 수동으로 수행하는 이유는 package.json에서 새 버전 번호를 읽어 변수에 저장하고 releaseCMD로 전달할 수 있는 쉬운 방법이 없기 때문입니다.

    ZX 스크립트



    콘솔에 텍스트 출력



    콘솔에 물건을 출력하는 데 항상 유용합니다. console.log("Hello")를 사용하여 콘솔에 텍스트를 출력할 수 있습니다.

    명령 실행


    echo와 같은 터미널 명령을 실행하여 텍스트를 출력하려는 ​​경우 대안으로 사용할 수 있습니다. 당신은 그것을 다음과 같이 씁니다.$\ echo Hello

    JSON 읽기



    Github Page of ZX에는 일반적인 명령 목록과 이를 사용하여 수행할 수 있는 예제가 있습니다. 그 중 하나는 패키지 버전을 읽는 것입니다.

    const { version } = await   fs.readJson("./package.json");
    


    모두 합치자



    모든 향후 프로젝트 스크립트를 포함할 디렉토리scripts를 생성하고 파일release.mjs을 생성했습니다.

    /scripts/release.mjs

    console.log('Running Release Script')
    await $`npm version patch` // Bumps package version
    const { version } = await fs.readJson('./package.json') // Reads new package version
    try {
      await $`echo releaseCMD -version ${version}` //Replace with actual command
    } catch (p) {
      console.log(`Error: ${p.stderr} ExitCode ${p.exitCode}`) //Logs Error to the terminal
    }
    


    스크립트 실행



    다음 명령을 사용하여 전역적으로 zx를 설치할 수 있습니다.

    npm i -g zx
    


    또는 npx zx <scriptname> 로 실행할 수 있습니다.

    개인적으로 대본을 완성하자마자 더 이상 이 문제를 다루고 싶지 않습니다. 모든 팀원이 설명 없이 스크립트를 사용할 수 있기를 바랍니다.
    따라서 package.json에 스크립트로 추가했습니다.

    /package.json

    {
      "scripts": {
        "release": "npx zx ./scripts/release.tjs"
      }
    }
    


    이제 다른 스크립트처럼 실행할 수 있습니다npm run release.

    결론



    불행히도 나는 ZX와 놀 시간이 많지 않았습니다. 매우 복잡한 스크립트를 만들 수 있다고 확신합니다.

    제 사용 사례에서는 관리자로서 스크립트를 실행하거나 크로스 플랫폼 스크립트를 생성하는 등을 조사하지 않았습니다. 다시 말하지만 저는 시스템 관리자가 아닙니다.

    결국 ZX는 BASH를 다루지 않고도 쉘 스크립트를 생성할 수 있는 좋은 방법이라고 생각합니다. 따라서 TypeScript/JavaScript 지식으로 지루한 작업을 자동화하는 스크립트를 빠르게 만들 수 있습니다.

    좋은 웹페이지 즐겨찾기