권장사항에 따라 빌드 도구를 선택하고 구성합니다.
오늘 web.dev는 tooling.report라는 새로운 이니셔티브를 출시합니다. 이 웹사이트는 웹 개발자에게 인기 있는 빌드 도구에서 지원되는 기능을 간략히 설명합니다. 이 사이트는 다음 프로젝트에 적합한 빌드 도구를 선택하거나, 한 도구에서 다른 도구로 마이그레이션할 가치가 있는지 결정하거나, 도구 구성 및 코드베이스에 권장사항을 통합하는 방법을 파악하는 데 도움을 주기 위해 작성되었습니다. 도구는 서로 다른 중점 영역을 갖고 있으며 서로 다른 요구사항을 충족합니다. 즉, 도구를 선택하고 구성하는 데는 절충이 필요합니다. Google에서는 tooling.report를 통해 이러한 장단점을 설명하고 특정 빌드 도구에서 권장사항을 준수하는 방법을 문서화하고자 합니다.
관심이 있으신가요? tooling.report에서 탐색을 시작하고, 이 사이트를 개발한 이유와 방법에 대해 자세히 알아보려면 계속 읽어보세요.
빌드 도구가 방해가 되는 경우가 많음
Google은 GoogleChromeLabs를 통해 Squoosh, Proxx와 같은 웹 앱은 물론 Chrome Dev Summit 2019를 위한 웹사이트도 빌드했습니다. 여느 웹 개발 프로젝트와 마찬가지로 호스팅 환경, 프레임워크, 빌드 도구 설정과 같은 프로젝트 인프라부터 설명합니다. 이 인프라는 프로젝트가 진행됨에 따라 업데이트됩니다. Google에서 채택한 프레임워크나 기술을 수용하기 위해 새 플러그인이 추가되거나, 빌드 도구가 Google에서 달성하고자 하는 목표를 더 잘 이해할 수 있도록 코드 작성 방식이 변경됩니다. 이 과정을 진행하면서 선택한 도구가 방해가 되는 경우가 많습니다.
Google팀에서는 사용자에게 최상의 웹 환경을 제공하는 데 주력하고 있으며, 이에 따라 프런트엔드 애셋이 조합 및 전달되는 방식을 세밀하게 조정해야 할 수 있습니다. 예를 들어 기본 스레드 스크립트와 웹 작업자 스크립트에서 종속 항목을 공유하는 경우 스크립트마다 종속 항목을 두 번 번들로 묶는 대신 한 번만 다운로드하면 됩니다. 일부 도구는 이를 즉시 지원하며, 기본 동작을 변경하기 위해 상당한 맞춤설정 작업이 필요한 도구도 있고, 전혀 불가능한 도구도 있습니다.
이러한 경험을 통해 다양한 빌드 도구가 할 수 있는 작업과 할 수 없는 작업을 조사했습니다. 기능 체크리스트를 만들어 다음에 새 프로젝트를 시작할 때 이를 평가하고 프로젝트에 가장 적합한 도구를 선택할 수 있기를 바랐습니다.
Google의 접근방식
여러 빌드 도구를 한곳에서 평가하고 비교하려면 어떻게 해야 할까요? 테스트 사례를 작성하는 방식으로 접근했습니다.
Google팀에서는 웹 개발 권장사항을 나타내는 테스트 기준에 관해 논의하고 설계했습니다. 특히 비교할 수 없는 두 가지 결과를 측정하지 않도록 하기 위해 개발자 환경과 관련된 테스트는 의도적으로 제외하여 빠르고 응답성이 높으며 원활한 사용자 환경을 제공하는 방법에 중점을 두었습니다.
테스트 목록을 만든 후에는 각 도구의 빌드 스크립트를 작성하여 도구가 테스트의 성공 기준을 충족하는지 확인했습니다. 초기 세트로 Webpack v4, Rollup v2 및 Parcel v2를 조사하기로 결정했습니다. 또한 많은 프로젝트에서 이 설정을 사용하고 있으므로 Browserify + Gulp도 테스트했습니다. 테스트에 통과하려면 공개적으로 문서화된 도구 또는 도구 플러그인 기능만 사용할 수 있습니다. 초기 테스트 세트를 작성한 후 Google은 빌드 도구 작성자와 협력하여 해당 도구를 올바르게 사용하고 공정하게 표현했는지 확인했습니다.
${tool_name}만 사용하는데 괜찮을까요?
많은 팀에 빌드 인프라를 유지보수하는 전담 인력이 있으며, 팀의 다른 구성원들은 빌드 도구에 관한 선택을 하지 못할 수 있습니다. 이 사이트가 여러분이 사용하는 도구에 대한 기대치를 설정하는 방법으로 여전히 유용하기를 바랍니다. 각 테스트에는 테스트가 중요한 이유에 관한 설명과 추가 리소스가 포함되어 있습니다. 선택한 도구로 권장사항을 채택하려면 저장소의 테스트 설정에 이를 위한 구성 파일이 포함되어 있습니다.
사이트에 참여할 수 있나요?
현재 누락된 특정 기능을 테스트해야 한다고 생각되면 GitHub 문제에서 제안하여 토론을 시작하세요. Google에서는 실제 사용 사례를 캡슐화하는 것을 목표로 하므로 이러한 결과를 더 잘 평가하는 모든 추가 테스트를 수용할 수 있습니다.
초기 세트에 포함하지 않은 도구 테스트를 작성하려는 경우에도 가능합니다. 자세한 내용은 CONTRIBUTING.md를 참고하세요.