# Django Compressor

***

**1. Basic Compressor Configuration**

```python
COMPRESS_ENABLED = True
COMPRESS_ROOT = os.path.join(BASE_DIR, 'static/')
```

**2. Specifying Custom Compression Settings**

```python
COMPRESS_CSS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
]
```

**3. Using the `Output` Filter to Optimize Output**

```python
COMPRESS_OUTPUT_FILTERS = ['compressor.filters.output.XhtmlOutputFilter']
```

**4. Processing a Single File**

```python
from compressor.filters import default

filter = default.CssAbsoluteFilter(BASE_DIR)
css = filter.input('styles/main.css')
```

**5. Compressing All Files**

```python
from django.core.management import call_command

call_command('compress')
```

**6. Excluding Specific Files from Compression**

```python
COMPRESS_EXCLUDED = [
    '.*\.png$',
    '.*\.jpg$',
    '.*\.gif$',
]
```

**7. Defining Custom Compression Rules**

```python
COMPRESS_PRECOMPILERS = (
    ('text/coffeescript',
     'coffee --compile --stdio'),
)
```

**8. Using the \`OutputFile' Filter to Control Output Location**

```python
COMPRESS_OUTPUT_FILTERS = ['compressor.filters.output.OutputFileFilter',]
```

**9. Customizing Filter Settings**

```python
COMPRESS_YUICOMPRESSOR_BINARY = '/path/to/yuicompressor'
```

**10. Handling Broken Source Files**

```python
COMPRESS_FAIL_SILENTLY = True
```

**11. Compressing JavaScript Files**

```python
COMPRESS_ENABLED = True
COMPRESS_JS_FILTERS = [
    'compressor.filters.jsmin.JSMinFilter'
]
```

**12. Using the \`Autoprefixer' Filter**

```python
COMPRESS_CSS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.css_default.CssAutoprefixerFilter'
]
```

**13. Specifying the Static Root Directory**

```python
COMPRESS_ROOT = '/path/to/static/'
```

**14. Using the \`Exclusion' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.exclusion.ExclusionFilter',
]
```

**15. Customizing Error Reporting**

```python
COMPRESS_ERROR_MESSAGE = 'Error message to display'
```

**16. Using the \`Minify' Filter**

```python
COMPRESS_CSS_FILTERS = [
    'compressor.filters.cssmin.CSSMinFilter'
]
```

**17. Specifying the Base URL**

```python
COMPRESS_URL = '/static/'
```

**18. Using the \`Reorder' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.reordering.ReorderFilter',
]
```

**19. Compressing Images**

```python
COMPRESS_ENABLED = True
COMPRESS_IMAGE_FILTERS = [
    'compressor.filters.images.OptimizeImagesFilter'
]
```

**20. Using the \`Clean' Command**

```python
python manage.py compress --clean
```

**21. Using the \`Verbose' Option**

```python
python manage.py compress --verbose
```

**22. Customizing File Names**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.filename_suffix.FilenameSuffixFilter',
]
```

**23. Using the \`Filter' Class**

```python
from compressor.filters import CssAbsoluteFilter

filter = CssAbsoluteFilter(BASE_DIR)
css = filter.input('styles/main.css')
```

**24. Using the \`Process' Command**

```python
python manage.py compress --process
```

**25. Using the \`Detect' Command**

```python
python manage.py compress --detect
```

**26. Using the \`Compiler' Class**

```python
from compressor.compiler import Compressor

compressor = Compressor()
css = compressor.compile('styles/main.css')
```

**27. Using the \`Block' Class**

```python
from compressor.blocks import Block

block = Block('script', 'scripts/main.js')
```

**28. Using the \`Compressor' Class to Process Files**

```python
from compressor.compiler import Compressor

compressor = Compressor()
css_files = ['styles/main.css', 'styles/extra.css']
css = compressor.compress_files(css_files)
```

**29. Using the \`Override' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.override.OverrideFilter',
]
```

**30. Using the \`URL' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.url.UrlFilter',
]
```

**31. Using the \`Makefile' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.makefile.MakefileFilter',
]
```

**32. Using the \`Merge' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.merge.MergeFilter',
]
```

**33. Using the \`Spaceless' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.spaceless.SpacelessFilter',
]
```

**34. Using the \`Stats' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.stats.StatsFilter',
]
```

**35. Using the \`TemplateFilter' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.template.TemplateFilter',
]
```

**36. Using the \`Timeline' Filter**

```python
COMPRESS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.timeline.TimelineFilter',
]
```
