올챙이시절 기록소

JavaScript Obfuscator 코드압축 & 난독화 - 자동화 관련 잡설 본문

카테고리 없음

JavaScript Obfuscator 코드압축 & 난독화 - 자동화 관련 잡설

allroundplayer 2017. 10. 24. 14:25

왜 자바스크립트를 압축할까?


웹개발을 하는데 있어 성능에서 중요한 요소중 하나는 용량을 줄이는 것이다. 


전송해야할 파일의 용량이 줄어들면 사용자입장에서는 더 빠르게 로딩할 수 있고 


서버측에서는 트래픽이 줄어들기 때문에 많은 이점을 가질 수 있다. 



압축이 된 파일을 보면 한 줄로 쫙  이어지면서 변수 치환도 일어 났음을 볼 수 있다


여튼, 이러한 이유로 사내는 JavaScript Obfuscator란 툴을 사용을 한다


상용툴인데 그다지 비싸지는 않다


여튼, 이 부분을 자동화해야하는데 문제는

0


동작하지 않는다


방법이 없는 듯하여 다른 툴들을 알아보았다


1번 후보 야후 : YUI Compressor

2번 후보 구글 : Closure Compiler

3번 후보 Crunchme


( * Closure Compiler는 압축과 동시에 정적분석이 수행되었다 )



그리고 압축률 실험을 했다


오리지날은  BaseGrid.js ( 148KB / 100% )

--------------------------------------------

 JavaScript Obfuscator  ( 37.3KB / 25% )

YUI Compressor ( 64KB / 43% )

Closure Compiler ( 60KB /  41% )

Crunchme ( 70KB / 47% )

--------------------------------------


아니 당신은 대체 


상용은 상용인가 보다


압축률이 넘사벽이라 다른 툴로 함부로 변경하지 못했다


다시 원점이다


" 왜 Command_line_help 메뉴가 안켜질까 "


GUI만 아직 안만들어진게 아닐까 생각했다 


0


빙고!



기쁜 마음에 여기있는 옵션뿐만 아니라 키보드의 모든 자판을 다 입력 해보았다


이후 부터는 술술 풀렸다


0


이 동작과 똑같이 파일이 출력되는 옵션 조합을 찾고


$ jso -s -c $APP_DIR;


프로시저로 만들어 놓았다 ( 컴포넌트의 패키징 과정 중 하나이기에 )


JAVASCRIPT_COMPRESS()

{

JAVASCRIPT_MAXGAUGE_DIR="$WEBOUT_DIR"


#common   내부의 locale 폴더를 제외한 모든 JS

#config      내부의 style 폴더를 제외한 모든 JS

#EventDescription  압축 X

#Exem       모든 소스. 각각 폴더 모든 JS

#Extjs       압축 X

#Images    압축 X

#Lib        폴더 안의 IMXWS.js

#PA        style 폴더를 제외 한 모든 JS

#Popup     폴더 안의 app.js

#Report_download ? 해당 없음.

#RTM      style 폴더를 제외 한 모든 JS


# Cannot use array, cause too low bash version.


DIR="$JAVASCRIPT_MAXGAUGE_DIR"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/common"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/config"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/config/view"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/Exem "

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/Exem/chart"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/Exem/config"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/PA"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/PA/container"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/PA/view"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/popup"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/RTM"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/RTM/Frame"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/RTM/tools"

DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/RTM/view"


#ls $JAVASCRIPT_MAXGAUGE_DIR/lib/IMXWS.js

for DIR_PRE in ${DIR}

do

cd $DIR_PRE; 

for APP in `ls | grep \.js | grep -v extjs`;

do

APP_DIR=$DIR_PRE/${APP}

echo $APP_DIR

jso -s -c $APP_DIR;

unset APP_DIR;

done

done


jso -s -c $JAVASCRIPT_MAXGAUGE_DIR/lib/IMXWS.js

}


PS. Cpu Core를 하나만 사용하는 툴이라 그게 참 아쉽다, 빌드서버에서 상습 정체 구간이다

Comments