2017-04-11 4 views
2

이전에, 나는 클로저 프로젝트를 컴파일하기 위해 다음과 같은 빌드 스크립트를 사용하고 있습니다 :폐쇄 컴파일러 의존성 계산 closurebuilder.py보다 훨씬 느린

# BUILD SCRIPT 1: 

closure-library/closure/bin/build/closurebuilder.py \ 
    --root=closure-library/ \ 
    --root=src/ \ 
    --namespace="entrypoint" \ 
    --output_mode=compiled \ 
    --compiler_jar=compiler.jar \ 
    --compiler_flags="--js=closure-library/closure/goog/deps.js" \ 
    --compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS" \ 
     > ../public_html/scripts/compiled.js 

이 제대로 작동을하지만, 다음과 같은 출력을 얻을 수 :

# BUILD SCRIPT 2: 

java -jar compiler.jar \ 
    --js "src/**.js" \ 
    --js "closure-library/closure/goog/**.js" \ 
    --js "!closure-library/closure/goog/**_test.js" \ 
    --dependency_mode=STRICT \ 
    --entry_point=entrypoint \ 
    --compilation_level=ADVANCED_OPTIMIZATIONS \ 
    --js_output_file=../public_html/scripts/compiled.js 
:
closure-library/closure/bin/build/closurebuilder.py: Closure Compiler 
now natively understands and orders Closure dependencies and 
is prefererred over using this script for performing JavaScript 
compilation. 

Please migrate your codebase. 

See: 
https://github.com/google/closure-compiler/wiki/Managing-Dependencies 

많은 실험 후, 나는 마침내 (필요한 goog. libs와 포함) 제대로 작동 컴파일러를 가지고

이렇게하면 비슷한 컴파일 된 코드가 생성됩니다 (일부는 순서가 변경되고 일부 변수 이름은 변경되지만 중요한 차이는 없음). 그러나 빌드 스크립트 2는 길이가 50 % 길어서 (30 초에 비해 45 초) 걸립니다.

내 빌드 스크립트 2가 다소 잘못되었거나 덜 효율적입니다. 그렇지 않다면, 왜 상당히 느린 컴파일 방법이 "선호"됩니까?

답변

0

모든 코드는 closure-compiler에 의해 실제로 파싱되지만 closure-builder는 정규식을 사용합니다 (필자는 믿는다).

Closure-builder는 CommonJS 또는 ES6 모듈과 같은 많은 최신 종속성을 포함하지 않으므로 마이그레이션이 필요합니다.

+0

그래,하지만 이것은 기본적으로 다음을 의미합니다. 1. 빌더를 사용하여 deps 생성 2. 생성 된 deps 만 닫음 –

+0

이 대답은 5 년이며 더 이상 정확하지 않습니다. –

+0

어쩌면 자세하게 설명 하겠지만 일반적으로는 그렇습니다. closure-builder는 컴파일러에 전달해야하는 파일을 사전 필터링 할 수 있습니다. raw closure-compiler를 사용한다면 놀라 울 정도로 느립니다. –