Init
This commit is contained in:
commit
515289eff2
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.pyc
|
37
README.md
Normal file
37
README.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# YUI Compressor Plugin
|
||||||
|
|
||||||
|
A pelican plugin that minifies CSS/JS files using YUI Compressor during the
|
||||||
|
building step.
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
YUI Compressor needs to be present on your system. One way to obtain it is by
|
||||||
|
installing it using pip:
|
||||||
|
|
||||||
|
Important: This method assumes that JRE is already installed.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install yuicompressor
|
||||||
|
```
|
||||||
|
|
||||||
|
More information about YUI Compressor: https://github.com/yui/yuicompressor
|
||||||
|
|
||||||
|
# Instructions
|
||||||
|
|
||||||
|
Add `yuicompressor` to `pelicanconf.py` after installing YUI Compressor:
|
||||||
|
|
||||||
|
```python
|
||||||
|
PLUGINS = ['yuicompressor']
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, this plugin expects the YUI Compressor executable to be named
|
||||||
|
`yuicompressor`. This can be changed by defining `YUICOMPRESSOR_EXECUTABLE` in
|
||||||
|
`pelicanconf.py`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
YUICOMPRESSOR_EXECUTABLE = 'yui-compressor'
|
||||||
|
```
|
||||||
|
|
||||||
|
# Licence
|
||||||
|
|
||||||
|
GNU AFFERO GENERAL PUBLIC LICENSE Version 3
|
2
__init__.py
Normal file
2
__init__.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from .yuicompressor_opt import *
|
30
yuicompressor_opt.py
Normal file
30
yuicompressor_opt.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# -*- 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)
|
Loading…
Reference in New Issue
Block a user