Daylogs/Javascript

Grunt: 옵션으로 숫자 전달 시 문자열이 깨지는 문제

ohgyun 2016. 6. 6. 15:50
발생일: 2014.04.10

키워드: 그런트, Grunt, build, 빌드

문제:
그런트 빌드 시 커맨드라인 옵션으로 깃 해시를 넘기고 있는데, 간헐적으로 빌드에 실패한다.

예를 들어, 아래와 같은 식이다.

$ grunt build --gitHash=9e14492

원인이 뭘까?


해결책:

빌드 코드에서는 아래와 같이 `option()`으로 옵션을 가져오고 있었다.

grunt.option('gitHash’)

옵션 처리를 위해 Grunt 내부에서 `nopt`라는 라이브러리를 사용하는데,
이 라이브러리에서 자동으로 타입을 결정하고 있었던 것이 원인이었다.
해당 라이브러리에서 문자열로 넘어온 '3.10'이나 '9e123' 같은 옵션이 Number로 판단해 처리했기 때문이다.

nopt 에는 knownOpt를 미리 정의하면, shorthand와 함께 타입을 지정할 수 있다.
Grunt도 이를 사용하고 있긴 한데 아쉽게도 이 옵션을 Grunt 외부에 오픈하고 있지 않다.

우리는 단순히 해시 앞에 _ 를 붙이는걸로 해결했다.

$ grunt build --gitHash=_9e14492




반응형