- 자바스크립트 *.js파일을 압축해 용량을 줄여서 *.min.js로 만드는 프로그램을 사용하고 있었는데 (gulf , gulf-minify (terser) )

es11문법에서 에러가 났다

GulpUglifyError: unable to minify JavaScript Caused by: SyntaxError: Unexpected token: keyword
gulp-minify Cannot read property 'replace' of undefined

 

terser를 쓰면 되는데 무조건 빌드가 되고, gulf를 사용하려니 gulp-minify와는 달리, 무조건 빌드에 무조건 소스 복사를 하는등 내 맘에 드는 것이 없어서

결국 배치 파일이나 파워셀을 사용하려고 하다가, 기능 부족하고 너무 번잡해서 결국

파이썬을 쓰기로 했다.

힐링되는 기분이다.

 

 

//-----------------------------

* js파일 압축 terser 이용 파이썬 스크립트 소스

더보기

import os
import platform
import subprocess
import win32api
import sys

exe = "node \"{}\"".format(r"C:\Users\사용자\AppData\Roaming\npm\\node_modules\terser\bin\terser")

arr = ['file1', "file2"]
for file in arr:
    src = r"폴더\{}.js".format(file)
    dest = r"폴더\{}.min.js".format(file)

    t1 = 0
    if os.path.exists(src)==True: t1=os.path.getmtime(src);
    t2=0
    if os.path.exists(dest)==True: t2=os.path.getmtime(dest);
    if t1  > t2: #변경된 경우만 
        cmd = "{} -c -m -o {} -- {}".format(exe,  dest, src)
        print(src, '\n', dest, '\n', exe, "\n", cmd);
        os.system( cmd ) 
    else:
        print('skip', src)

#input('Press Key to Exit ...')
print('Pack End')

 

 

//--------------------
Terser  <=== 선택
https://github.com/terser/terser - 4.2k 
- v4.6.4 , 20.02 
- weekly downloads :  9,528,201 
ES6+ 
- uglify-es 의 fork,  uglify-es 와 uglify-js@3 호환 

 

 

//-------------
* UglifyJS 3
https://github.com/mishoo/UglifyJS2  -  10.6k
- v3.8.0 , 20.02
- weekly downloads :  15,215,348
- uglify-js는 es5만 지원,  ES6+를 지원하려면 Babel을 사용 해야 함
 


* Minify
https://github.com/coderaiser/minify - 86
- v5.1.0 , 20.01
- weekly downloads :  57,131


* node-minify
https://github.com/srod/node-minify - 357
- v5.3.0 , 20.01
- weekly downloads :  12,275
- 다른 모듈 사용



//-------------------

* gulp용
gulp-terser
https://github.com/duan602728596/gulp-terser - 39
- v1.2.0  ,  19.05
- weekly downloads :  25,456
- 원본 소스를 무조건 복사하는 문제


gulp-terser-js
https://github.com/A-312/gulp-terser-js - 3
- v5.1.2 , 20.01
- weekly downloads :  1,322
- 시간 비교 적용안됨, 무조건 빌드


* gulp-minify
https://github.com/hustxiaoc/gulp-minify - 57
- v3.1.0  ,  18.01
- weekly downloads :  19,697
- terser이용,
- es11문법에서 에러 발생


* gulp-uglify
https://github.com/terinjokes/gulp-uglify  - 1.2k
- v3.0.2  , 19.05
- weekly downloads :  395,880



* gulp-terser
https://github.com/duan602728596/gulp-terser  - 39
- v1.2.0  , 19.05
- weekly downloads :  25,456


//------------------
// pass
* Google Closure Compiler
https://github.com/google/closure-compiler - 5.4k
v20200204 , 20.02.22
- java 



* YUI Compressor
http://yui.github.io/yuicompressor/
- java 용



//--------------------
// 참고

10 Javascript Compression Tools and Libraries for 2019
https://blog.bitsrc.io/10-javascript-compression-tools-and-libraries-for-2019-f141a0b15414


Posted by 코덴스

댓글을 달아 주세요