Speeding up the JavaScript ecosystem - npm scripts 이 문서에서 저자는 자바스크립트 개발자들에게 일반적인 작업 중 하나인 npm 스크립트 실행 시간을 최적화
Speeding up the JavaScript ecosystem - npm scripts 이 문서에서 저자는 자바스크립트 개발자들에게 일반적인 작업 중 하나인 npm 스크립트 실행 시간을 최적화하는 방법에 대해 논의합니다. 저자는 프로파일링 및 코드 분석을 이용하여 불필요한 모듈 로딩 및 문자열 정렬과 같은 비효율적인 영역을 식별하고 코드를 대상적으로 변경하여 npm 스크립트의 오버헤드를 줄입니다. 이러한 변경으로 저자는 npm 스크립트의 실행 시간을 400ms에서 22ms로 크게 개선합니다. 저자는 먼저 package.json의 "scripts" 필드가 프로젝트의 공통 작업을 설정하는 데 사용되며, 이러한 스크립트가 터미널에서 npm run을 사용하여 실행될 수 있다는 방법을 설명합니다. 그런 다음, 기본 명령을 직접 호출하는 것이 npm run을 이용해 쉘에서 실행하는 것보다 더 빠르다는 것을 설명하며, 이로 인해 npm run이 느린 이유를 조사합니다. 저자는 대부분의 시간이 npm CLI를 구성하는 모든 모듈을 로드하는 데 사용된다는 것을 발견합니다. npm CLI를 다른 .js 파일과 마찬가지로 호출하고, 노드의 --cpu-prof 인수를 사용하여 프로파일링하는 방법을 찾습니다. 프로파일을 분석하여, 불필요한 모듈 로딩 및 문자열 정렬과 같은 비효율적인 영역을 식별합니다. npm 스크립트의 오버헤드를 줄이기 위해, 저자는 코드를 대상적으로 변경합니다. 예를 들어, 필요할 때만 느리게 로드되는 방식으로 특정 모듈의 로딩 방식을 변경합니다. 또한, 주요 진입 파일을 가진 종속성을 식별하고, npm 스크립트 실행에 필요한 코드만 로드하여 모듈 그래프의 크기를 줄입니다. 또한, String.prototype.localeCompare의 사용을 더 빠른 Intl.Collator 객체로 대체합니다. 전반적으로, 저자의 조사는 코드의 작은 변경이 npm 스크립트의 실행 시간에 큰 차이를 만드는 방법을 보여줍니다. 또한, 다른 JavaScript 도구에 대한 문제인 모듈 그래프의 단락 회로 문제에 대한 주의를 끌며, 저자는 이 문제를 해결하기 위해 배포할 때 코드를 번들로 묶는 것을 제안합니다. 그러나 저자는 앞으로 JavaScript 엔진이 이 문제를 해결할 것을 기대합니다.