ceesvanegmond / minify
A package for minifying styles and javascript
Installs: 140 913
Dependents: 3
Suggesters: 0
Security: 0
Stars: 196
Watchers: 10
Forks: 72
Open Issues: 5
Requires
- php: >=5.3.2
- illuminate/support: ~4.1
- natxet/cssmin: 3.*
- tedivm/jshrink: ~1.0
Requires (Dev)
- mikey179/vfsstream: 1.2.*
- phpspec/phpspec: 2.0.0
README
For laravel 5 please use devfactory/minify
With this package you can minify your existing stylessheet and javascript files. This process can be a little tough, this package simplies this process and automates it.
Installation
Begin by installing this package through Composer.
{ "require": { "ceesvanegmond/minify": "2.0.*" } }
Laravel installation
// app/config/app.php 'providers' => [ '...', 'CeesVanEgmond\Minify\MinifyServiceProvider', ];
Publish the config file:
php artisan config:publish ceesvanegmond/minify
When you've added the MinifyServiceProvider
an extra Minify
facade is available.
You can use this Facade anywhere in your application
Stylesheet
// app/views/hello.blade.php <html> <head> ... {{ Minify::stylesheet('/css/main.css') }} // or by passing multiple files {{ Minify::stylesheet(array('/css/main.css', '/css/bootstrap.css')) }} // add custom attributes {{ Minify::stylesheet(array('/css/main.css', '/css/bootstrap.css'), array('foo' => 'bar')) }} // add full uri of the resource {{ Minify::stylesheet(array('/css/main.css', '/css/bootstrap.css'))->withFullUrl() }} // minify and combine all stylesheet files in given folder {{ Minify::stylesheetDir('/css/') }} // add custom attributes to minify and combine all stylesheet files in given folder {{ Minify::stylesheetDir('/css/', array('foo' => 'bar', 'defer' => true)) }} // minify and combine all stylesheet files in given folder with full uri {{ Minify::stylesheetDir('/css/')->withFullUrl() }} </head> ... </html>
Javascript
// app/views/hello.blade.php <html> <body> ... </body> {{ Minify::javascript('/js/jquery.js') }} // or by passing multiple files {{ Minify::javascript(array('/js/jquery.js', '/js/jquery-ui.js')) }} // add custom attributes {{ Minify::javascript(array('/js/jquery.js', '/js/jquery-ui.js'), array('bar' => 'baz')) }} // add full uri of the resource {{ Minify::javascript(array('/js/jquery.js', '/js/jquery-ui.js'))->withFullUrl() }} // minify and combine all javascript files in given folder {{ Minify::javascriptDir('/js/') }} // add custom attributes to minify and combine all javascript files in given folder {{ Minify::javascriptDir('/js/', array('bar' => 'baz', 'async' => true)) }} // minify and combine all javascript files in given folder with full uri {{ Minify::javascriptDir('/js/')->withFullUrl() }} </html>
Config
<?php return array( /* |-------------------------------------------------------------------------- | App environments to not minify |-------------------------------------------------------------------------- | | These environments will not be minified | */ 'ignore_environments' => array( 'local', ), /* |-------------------------------------------------------------------------- | CSS path and CSS build path |-------------------------------------------------------------------------- | | Minify is an extension that can minify your css files into one build file. | The css_path property is the location where your CSS files are located | The css_builds_path property is the location where the builded files are | stored. This is relative to the css_path property. | */ 'css_build_path' => '/css/builds/', /* |-------------------------------------------------------------------------- | JS path and JS build path |-------------------------------------------------------------------------- | | Minify is an extension that can minify your JS files into one build file. | The JS_path property is the location where your JS files are located | The JS_builds_path property is the location where the builded files are | stored. This is relative to the css_path property. | */ 'js_build_path' => '/js/builds/', );
Without Laravel
<?php $config = array( 'ignore_environments' => 'local', 'js_build_path' => '/js/builds/', 'css_builds_path' => '/css/builds', ) $minify = new CeesVanEgmond\Minify\Providers\Javascript($public_path); $minify->add($file) if (in_array($environment, $config['ignore_environments'])) { return $provider->tags(); } if ( ! $minify->make($config['css_build_path'] ) { $filename = $provider->tag($config['css_build_path'] . $provider->getFilename()); } $provider->minify(); $filename = $provider->tag($config['css_build_path'] . $provider->getFilename());