Vite 프로젝트에서 특정 script를 실행시켜야 할 때

tyange·2023년 11월 21일

Vite로 migration을 진행한 프로젝트 중 하나는 내가 회사에 입사하기 전부터 있었던 프로젝트인데, 다국어를 위해 i18n을 이용하고 있었다. i18n을 사용하는 모든 프로젝트들이 똑같은지는 모르겠지만... 이 프로젝트는 google-spreadsheet라는 패키지를 이용, 각 언어별로 번역된 단어, 문장을 하나의 구글 스프레드 시트에서 추출하여 JSON 파일로 다운로드 받는 방식을 쓰고 있었다. 다운로드는 프로젝트 내부의 특정 script를 실행하는 것으로 이뤄지고, 다운로드된 파일은 특정 폴더에 위치하게 되는 식이었다.

문제는 Vite로 migration을 진행한 다음의 일이었다. 원래 동작하던 다운로드 스크립트가 동작하질 않고 계속 에러를 뱉고 있었다. 기존의 스크립트 명령어는,

node -r esm src/lib/i18next/download.js

이런 식으로 node를 이용해 -r 명령을 붙여 esm 패키지를 먼저 실행한 다음, 다운로드를 실행하는 구조였다.
Vite로 migration을 진행해서 Vite 위에서 동작하는 프로젝트가 되었으므로, 번들러인 Rollup을 이용하게 된다. Rollup은 기본적으로 esm을 지원하므로 별도로 esm 패키지를 사용해 스크립트를 실행할 필요가 없다. 또한, preload할 esm 패키지가 필요하지 않으니까 -r 명령을 붙이지 말아야 한다.

정상적으로 실행하는 스크립트로 수정하자면,

node src/lib/i18next/download.js

이렇게 node로 실행만 하는 단순한 명령어가 된다.

profile
아주 흐린 날의 기록

0개의 댓글