BuildSystem

BuildSystem은 컴파일을 사용하는 언어에서 사용하는 방식이다. (빌드 환경에 따라 어떤 식으로 빌드할지를 정의하는 것)

C/C++에선 Make, CMake가 있고, Java에는 Maven, Gradle이 있다.

그런데 인터프리터 언어는 빌드가 필요없기 때문에 보통 패키지만 관리해주는 Package Manager를 사용한다.

Pythonpip가 있고, Javascriptnpm, bower, yarn이 있다.

 

 

Javascript의 BuildSystem

Javascript는 인터프리터 언어라서 빌드할게 없는데? 아니다. 요즘에는 Javascript도 컴파일을 한다. 예를 들면 Typescript, Coffeescript와 같은 Javascript를 편하게 사용하기 위한 여러 테크닉들이 있는데, 결국에는 타입스크립트나 커피스크립트와 같은 테크닉들은 자바스크립트로 번역이 되어야 하기 때문이다. 다음과 같은 경우들이 있다.

  • 타입스크립트, 커피스크립트와 같은 테크닉을 사용하는 경우
  • 자바스크립트의 버전을 구분해줘야 하는 경우
  • HTML에서 pug, ejs와 같은 템플릿을 사용하는 경우
  • CSS에서 sass, scss와 같은 테크닉을 사용하는 경우
  • Vue나 React와 같은 프레임워크를 사용하는 경우

 

위의 경우들은 결국 자바스크립트, HTML, CSS로 번역이 되어야 하기 때문에 프론트엔드에서도 BuildSystem이 필요하다.

 

 

Gulp

Java의 Maven을 예로 들면 BuildSystem + Package Manager라고 볼 수 있다. 빌드를 어떻게 할건지 정의도 하면서 의존 라이브러리도 기입한다. 반면 Gulp는 딱 BuildSystem 역할만 한다. 그렇기 때문에 bower같은 Package Manager를 함께 사용한다.