프로젝트를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
명령어가 적혀있어 발생하는 문제였습니다.
처음에는 제 환경에서만rm
부분을 rmdir
로 수정해서 사용하기로 했으나 Git에서 새롭게 Pull 받아올 때마다 수정을 해줘야 하는 번거러움이 있을 것으로 보여 이 부분을 해결할 수 있는 방법을 찾아봤습니다.
rimraf 라이브러리는 Node.js 환경에서 크로스 플랫폼 파일 및 디렉토리 삭제를 지원하는 패키지입니다. 이를 사용하면 Unix 기반 시스템과 Windows 시스템에서 동일한 명령어로 파일과 디렉토리를 삭제할 수 있습니다.
yarn add rimraf --dev
package.json
파일의 clean
스크립트를 rimraf
를 사용하도록 수정합니다."scripts": {
...
"clean": "rimraf dist",
...
},
이제 Windows와 Unix 기반 시스템 모두에서 yarn clean 명령어가 문제없이 작동하게 됩니다.
clean 스크립트
: 이전 빌드에서 생성된 파일들을 빌드 디렉터리에서 삭제하여 이전 빌드가 새 빌드에 영향을 미치는 것을 방지한다.