[Node.js] 크로스 플랫폼(Windows & Linux) 환경에서 clean 스크립트 작성

YouGyoung·2024년 8월 7일
0
post-thumbnail

빌드 오류 발생

프로젝트를yarn build 명령어로 빌드하려고 하니 다음과 같은 오류가 발생했습니다.

'rm'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.
command not found: rm

package.json파일에서 scripts 부분을 확인해 보니 빌드 시에 yarn clean도 실행이 되는 구조였습니다.

"scripts": {
    "build": "yarn clean && yarn build:js && yarn build:type && yarn build:css",
    "build:js": "node build.js",
    "build:type": "yarn tsc --emitDeclarationOnly",
    "clean": "rm -rf dist",
    "dev": "yarn build:js && yarn build:type"
  },

windows에서는 rm 명령어가 아닌 rmdir 명령어를 사용해 폴더나 파일을 삭제하는데 clean 스크립트에 Linux 환경에서 먹히는 rm 명령어가 적혀있어 발생하는 문제였습니다.

rimraf 라이브러리

처음에는 제 환경에서만rm 부분을 rmdir로 수정해서 사용하기로 했으나 Git에서 새롭게 Pull 받아올 때마다 수정을 해줘야 하는 번거러움이 있을 것으로 보여 이 부분을 해결할 수 있는 방법을 찾아봤습니다.

rimraf 라이브러리는 Node.js 환경에서 크로스 플랫폼 파일 및 디렉토리 삭제를 지원하는 패키지입니다. 이를 사용하면 Unix 기반 시스템과 Windows 시스템에서 동일한 명령어로 파일과 디렉토리를 삭제할 수 있습니다.

rimraf 설치 및 적용

  1. 먼저 rimraf 라이브러리를 프로젝트 루트에서 설치합니다.
yarn add rimraf --dev
  1. 설치가 완료되면 package.json 파일의 clean 스크립트를 rimraf를 사용하도록 수정합니다.
"scripts": {
	...
    "clean": "rimraf dist",
    ...
  },

이제 Windows와 Unix 기반 시스템 모두에서 yarn clean 명령어가 문제없이 작동하게 됩니다.

clean 스크립트
: 이전 빌드에서 생성된 파일들을 빌드 디렉터리에서 삭제하여 이전 빌드가 새 빌드에 영향을 미치는 것을 방지한다.

profile
프론트엔드 개발자

0개의 댓글

관련 채용 정보