Для больших JavaScript-проектов я рекомендую использовать grunt, который умеет всё. Но если нужно минифицировать один-два коротких скрипта, то разворачивать целый grunt нет смысла. Можно воспользоваться API closure compiler. Для этого достаточно простенького скрипта. Я использую такой.
#!/usr/bin/python3
import http.client as httplib, urllib.parse as urllib, sys
def main():
files = sys.argv[1:]
if files:
for src_file in files:
if src_file[-3:] == '.js':
tgt_file = src_file[:-3] + '.min.js'
else:
print('Warning: left not .js file')
continue
print('%s -> %s' % (src_file, tgt_file))
js_code = open(src_file, 'r').read().encode('utf-8')
# https://developers.google.com/closure/compiler/docs/api-ref
params = urllib.urlencode((
('js_code', js_code),
('compilation_level', 'SIMPLE_OPTIMIZATIONS'),
('output_format', 'text'),
('output_info', 'compiled_code'),
))
# Use the following value for the Content-type header. Always!
headers = {'Content-type': 'application/x-www-form-urlencoded'}
conn = httplib.HTTPConnection('closure-compiler.appspot.com')
conn.request('POST', '/compile', params, headers)
response = conn.getresponse()
data = response.read()
conn.close()
open(tgt_file, 'w').write(data.decode('utf-8'))
else:
print('Specify JavaScript files')
if __name__ == '__main__':
main()
Запускать его очень просто:
rjsmin src_file_1.js src_file_2.js ...
Его можно поправить по вкусу. Если вы ещё не перешли на
Python 3, то вам надо поправить import
. Остальное будет
работать в любой версии.
Если не работает — пишите.