
ZX를 사용하여 JavaScript로 셸 스크립트 작성
2022-10-19 last update
5 minutes reading code automation typescript bashJÉSHOOTS님의 사진Pexels
나는 과거에 수동 릴리스를 해야 하는 프로젝트에서 일하고 있었습니다. 우리는 터미널 명령으로 구성된 짧은 가이드를 따랐습니다. 새 릴리스마다 약간의 조정만 필요했습니다. 우리는 간단한 bash 스크립트를 작성함으로써 큰 이점을 얻을 수 있었습니다. 그러나 저는 시스템 관리자가 아니며 쉘 스크립트를 거의 작성하지 않는 경향이 있습니다. 작동하는 bash 스크립트를 디버깅하고 생성하는 데 너무 많은 시간이 걸립니다. 코드를 복사하여 붙여넣는 것이 더 효율적이라고 결정했습니다.
운 좋게도 Google의 개발자도 bash 스크립트를 작성하고 싶지 않았습니다. 그러나 분명히 그들은 더 나은 것을 만들 자원을 얻었습니다.
zx - A tool for writing better scripts
JavaScript를 Bash 명령과 결합하여 복잡한 스크립트를 만들 수 있습니다. 핵심은 NodeJS
빌드 단계는 기본적으로 다음과 같습니다.
명령을 사용하여 package.json의 버전을 범프 새 버전 번호를 releaseCMD에 전달하십시오.
이 작업을 수동으로 수행하는 이유는
콘솔에 물건을 출력하는 데 항상 유용합니다.
텍스트를 출력하기 위해
Github Page of ZX에는 일반적인 명령 목록과 이를 사용하여 수행할 수 있는 예제가 있습니다. 그 중 하나는 패키지 버전을 읽는 것입니다.
모든 미래 프로젝트 스크립트를 포함할 디렉터리
/스크립트/릴리스.mjs
명령을 사용하여 전역적으로 zx를 설치할 수 있습니다.
또는
개인적으로 스크립트가 끝나면 더 이상 이 문제를 처리하고 싶지 않습니다. 모든 팀원이 설명 없이 스크립트를 사용할 수 있기를 바랍니다.
따라서
/패키지.json
이제 다른 스크립트처럼 실행할 수 있습니다
결론
나는 과거에 수동 릴리스를 해야 하는 프로젝트에서 일하고 있었습니다. 우리는 터미널 명령으로 구성된 짧은 가이드를 따랐습니다. 새 릴리스마다 약간의 조정만 필요했습니다. 우리는 간단한 bash 스크립트를 작성함으로써 큰 이점을 얻을 수 있었습니다. 그러나 저는 시스템 관리자가 아니며 쉘 스크립트를 거의 작성하지 않는 경향이 있습니다. 작동하는 bash 스크립트를 디버깅하고 생성하는 데 너무 많은 시간이 걸립니다. 코드를 복사하여 붙여넣는 것이 더 효율적이라고 결정했습니다.
운 좋게도 Google의 개발자도 bash 스크립트를 작성하고 싶지 않았습니다. 그러나 분명히 그들은 더 나은 것을 만들 자원을 얻었습니다.
zx - A tool for writing better scripts
JavaScript를 Bash 명령과 결합하여 복잡한 스크립트를 만들 수 있습니다. 핵심은 NodeJS
child_process
작업을 위한 더 간단한 래퍼 구문입니다.릴리스 스크립트
빌드 단계는 기본적으로 다음과 같습니다.
npm version patch
이 작업을 수동으로 수행하는 이유는
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
을 만들었습니다./스크립트/릴리스.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
에서 스크립트로 추가했습니다./패키지.json
{
"scripts": {
"release": "npx zx ./scripts/release.tjs"
}
}
이제 다른 스크립트처럼 실행할 수 있습니다
npm run release
.