Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/slav123/CodeIgniter-minify
CodeIgniter minify library CSS and JavaScript compression on the fly
https://github.com/slav123/CodeIgniter-minify
Last synced: 3 days ago
JSON representation
CodeIgniter minify library CSS and JavaScript compression on the fly
- Host: GitHub
- URL: https://github.com/slav123/CodeIgniter-minify
- Owner: slav123
- License: mit
- Created: 2011-06-30T10:52:05.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2023-03-08T12:33:51.000Z (over 1 year ago)
- Last Synced: 2024-02-15T11:35:33.355Z (9 months ago)
- Language: PHP
- Homepage:
- Size: 185 KB
- Stars: 226
- Watchers: 33
- Forks: 87
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-codeigniter - CodeIgniter - minify - Minify library CSS and JavaScript compression on the fly. (Libraries)
README
# CodeIgniter - minify [![Build Status](https://travis-ci.org/slav123/CodeIgniter-minify.svg?branch=master)](https://travis-ci.org/slav123/CodeIgniter-minify)
Simple CodeIgniter library to compress **CSS and JavaScript** files on the fly.
Library is based on few other scripts like
or to minify CSS and it uses
[Google Closure compiler](https://developers.google.com/closure/compiler/) to
compress JavaScript## Installation
Just put `Minify.php` file in libraries path, and create `minify.php` config file on config directory.## Using the library
#### Configure the library:
All directories needs to be writable. Next you can set your own values for config file.```php
// enable/disable library (default value: 'TRUE')
$config['enabled'] = TRUE;// output path where the compiled files will be stored (default value: 'assets')
$config['assets_dir'] = 'assets';// optional - path where the compiled css files will be stored (default value: '' - for backward compatibility)
$config['assets_dir_css'] = '';// optional - path where the compiled js files will be stored (default value: '' - for backward compatibility)
$config['assets_dir_js'] = '';// optional - handy when your assets are in a different domain than main website (default value: '')
$config['base_url'] = '';// where to look for css files (default value: 'assets/css')
$config['css_dir'] = 'assets/css';// where to look for js files (default value: 'assets/js')
$config['js_dir'] = 'assets/js';// default file name for css (default value: 'style.css')
$config['css_file'] = 'styles.css';// default file name for js (default value: 'scripts.js')
$config['js_file'] = 'scripts.js';// default tag for css (default value: '')
$config['css_tag'] = '';// default tag for js (default value: '')
$config['js_tag'] = '';// use html tags on output and return as a string (default value: 'TRUE')
// if html_tags === FALSE - array with links to assets is returned
$config['html_tags'] = TRUE;// use automatic file names (default value: 'FALSE')
$config['auto_names'] = FALSE;// use to enable versioning your assets (default value: 'FALSE')
$config['versioning'] = FALSE;// automatically deploy when there are any changes in files (default value: 'TRUE')
$config['deploy_on_change'] = TRUE;// compress files or not (default value: 'TRUE')
$config['compress'] = TRUE;// compression engine setting (default values: 'minify' and 'closurecompiler')
$config['compression_engine'] = array(
'css' => 'minify', // minify || cssmin
'js' => 'closurecompiler' // closurecompiler || jsmin || jsminplus
);// when you use closurecompiler as compression engine you can choose compression level (default value: 'SIMPLE_OPTIMIZATIONS')
// avaliable options: "WHITESPACE_ONLY", "SIMPLE_OPTIMIZATIONS" or "ADVANCED_OPTIMIZATIONS"
$config['closurecompiler']['compilation_level'] = 'SIMPLE_OPTIMIZATIONS';
```#### Available engines
* CSS - `minify` or `cssmin` - both of them are local, just try out which one is better for you,
* JS - `closurecompiler` makes API call to external server, it's slower then regular inline engine, but it's super efficient with compression, `jsmin` and `jsminplus` are local#### Run the library
In the controller:
```php
// load the library
$this->load->library('minify');
// or load and assign custom config (will override values from config file)
$this->load->library('minify', $config);
// by default library's functionality is enabled, but in some cases you would like to return
// assets without compilation and compression - when debugging or in development environment
// in that case you can use config variable to disable it
$config['enabled'] = FALSE;
// or
$this->minify->enabled = FALSE;```
In controller or view:
```php
// set css files - you can use array or string with commas
// when using this method, you replaces previously added files
$this->minify->css(array('reset.css', 'style.css', 'tinybox.css'));
$this->minify->css('reset.css, style.css, tinybox.css');// add css files - you can use array or string with commas
// when using this method, you're adding new files to previous ones
$this->minify->add_css(array('reset.css'))->add_css('style.css, tinybox.css');// set js files - you can use array or string with commas
// when using this method, you replaces previously added files
$this->minify->js(array('html5.js', 'main.js'));
$this->minify->js('html5.js, main.js');// set js files - you can use array or string with commas
// when using this method, you're adding new files to previous ones
$this->minify->add_js(array('html5.js'))->add_js('main.js');// with methods: css(), js(), add_css() and add_js()
// you can pass group name for given files as second parameter
// default group name is "default"
$this->minify->js(array('html5.js', 'main.js'), 'extra');
$this->minify->add_css('style.css, tinybox.css', 'another');// deploy css
// bool argument for rebuild css - false means skip rebuilding (default value: TRUE)
echo $this->minify->deploy_css(TRUE);//Output: ''
// deploy js
// bool argument for rebuild js - false means skip rebuilding (default value: FALSE)
echo $this->minify->deploy_js();//Output: ''.
// you can use automatic file name for particular deploy when you have $config['auto_names'] set to FALSE
// to do so, you must set file name to 'auto' during deploy
echo $this->minify->deploy_css(TRUE, 'auto');
echo $this->minify->deploy_js(TRUE, 'auto');//Output: ''
//Output: ''.// you can deploy only particular group of files
echo $this->minify->deploy_css(TRUE, NULL, 'another');
echo $this->minify->deploy_js(TRUE, 'auto', 'extra');//Output: ''
//Output: ''.// you can enable versioning your your assets via config variable `$config['versioning']` or manually
$this->minify->versioning = TRUE;
echo $this->minify->deploy_js();//Output: ''.
```
## Changelog01 Mar 2021
* comments fixing
* config checks only when deploy26 Jul 2019
* added option to manually change version number for assets (thanks [screamingjungle](https://github.com/screamingjungle))11 Feb 2019
* fixed an issue where not all config variables from the constructor were taken into account02 Feb 2019
* new config variable to allow of use a custom domain/subdomain for your assets: `$config['base_url']` (default to '')25 Jul 2018
* new config variable to disable default behavior - deploy when any file is changed: `$config['change_on_deploy']` (default to TRUE)24 Jul 2018
* handle errors for closurecompiler engine26 Feb 2018
* new config variable to determine if we want to return html tags (as string result) or only links to the assets (as array): `$config['html_tags']` (default to TRUE)
* we can now specify what HTML tag will be used for CSS and JS through `$config['css_tag']` and `$config['js_tag']`17 Jun 2017
* new config variable to enable versioning assets `$config['versioning']` (default to FALSE)
* new config variable to enable/disable library - useful for debugging: `$config['enabled']` (default to TRUE)29 Dec 2016
* introduce option to save compiled css and js files in different folders - new config variables: `$config['assets_dir_css']` and `$config['assets_dir_js']`.29 Apr 2015
* allow using automatic file name for particular deploy when you have `$config['auto_names']` set to `FALSE`
* documentation update20 Apr 2015
* Closure compiler configuration extracted to config file22 Mar 2015
* method chaining support
* new methods: `add_css()` and `add_js()` - gives ability for adding files to existing files arrays
* added support to run library with custom array config, assigned as second parameter (during loading) `$this->load->library('minify', $config);`
* added support for *groups* in files arrays - as second (optional) parameter in methods: `css()`, `js()`, `add_css()` and `add_js()` (i.e. `$this->minify->js(array('script.js'), 'extra');` - default group name is *default*)
* added support for strings as first parameter in methods: `css()`, `js()`, `add_css()` and `add_js()` (i.e. `$this->minify->js('first.js, second.js');`)
* added support for automatic files names: `$config['auto_names'] = TRUE;`
* external compression classes moved to *minify* folder
* unit tests for new features10 Feb 2015
* Unit testing09 Feb 2015
* 2 new engines to compress JS files
* documentation update13 Oct 2014
* changed way of generating JS file14 July 2014
* small bug fixes in JS compression4 July 2014
* sample JavaScript files to see how it works
* detection of empty JS file causes force refresh23 May 2014
* you can chose your compression engine library in config file (CSS only)
* speed optimisations
* force CSS rewrite using $this->minify->deploy_css(TRUE);11 Mar 2014
* completely rewrite CSS parser - uses cssmin compress CSS,
* detects file modification time no longer force rewrites,
* example usage now included withing app## Any questions?
Report theme here: