Angular-CLI 버전을 1.0으로 업데이트 한 후, production build가 실패한다.

???

production build를 안하면 AoT build가 안되고, 그러면.. 끔찍! (배포용 js 파일 크기 증가: 로딩 시간 증가, 그리고 JiT 컴파일 시간 만큼의 오버헤드 증가! 전체적으로 로딩 시간 많이 증가…)

이유를 찾아보니, CLI 버전이 1.0.0이 되면서부터 더 이상 템플릿 내의 변수들이 public 이 아닌 경우를 AoT 컴파일 체크 시에 걸러내는 모양이다. 따라서 private 인 경우는 템플릿 내에서 사용이 불가능한 것!

public 으로 선언된 변수만 템플릿 내에서 참조가 가능하다! private 으로 선언된 변수는 해당 컴포넌트 내에서만 참조가 가능하다! 따라서 Service, Subscription 등은 private modifier를 주도록 하고, 그 외의 변수에는 public modifier를 주도록 하자.

이로 인해 View와 Logic이 더 명확히 분리되었다는 장점이 있지만, 갑작스런 변화로 인하여 외부 모듈 등이 사용이 불가능하다는 점이 생겼다 (가령 외부 모듈이 위의 원칙을 지키지 않았다면 AoT 컴파일이 안되어, production build가 되지 않는다).

따라서 이를 피하고 싶은 분들은 버전 1.0.0-rc.4 를 사용하시면 된다.

sudo npm install -g @angular/[email protected]

아니면 모든 모듈이 위의 원칙을 따라 만들어지길 기대하는 수밖에… (급하다면 직접 node_modules/ 폴더 들어가서 수정해야 한다. 나의 경우는 그렇게 동작시킴…)