31 lines
1003 B
Python
31 lines
1003 B
Python
# -*- coding: utf-8 -*-
|
|
|
|
from pelican import signals
|
|
from subprocess import check_call
|
|
import logging
|
|
import os
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
"""
|
|
Minify CSS and JS files in output path with YUI Compressor from Yahoo.
|
|
Required: an existing installation of YUI Compressor.
|
|
"""
|
|
|
|
def minify(pelican):
|
|
"""
|
|
Minify CSS and JS with YUI Compressor
|
|
:param pelican: The Pelican instance
|
|
"""
|
|
executable = pelican.settings.get('YUICOMPRESSOR_EXECUTABLE', 'yuicompressor')
|
|
extra_options = pelican.settings.get('YUICOMPRESSOR_EXTRA_OPTIONS', [])
|
|
for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']):
|
|
for name in filenames:
|
|
if os.path.splitext(name)[1] in ('.css','.js'):
|
|
filepath = os.path.join(dirpath, name)
|
|
logger.info('minify %s', filepath)
|
|
check_call([executable] + extra_options + ['--charset', 'utf-8', filepath, '-o', filepath])
|
|
|
|
def register():
|
|
signals.finalized.connect(minify)
|