Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eusonlito/laravel-packer
CSS, Javascript and Images packer/processors to Laravel
https://github.com/eusonlito/laravel-packer
compression css javascript laravel packer
Last synced: 12 days ago
JSON representation
CSS, Javascript and Images packer/processors to Laravel
- Host: GitHub
- URL: https://github.com/eusonlito/laravel-packer
- Owner: eusonlito
- License: mit
- Created: 2014-08-05T13:51:44.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-03-02T12:41:00.000Z (8 months ago)
- Last Synced: 2024-10-18T04:22:56.445Z (21 days ago)
- Topics: compression, css, javascript, laravel, packer
- Language: JavaScript
- Homepage:
- Size: 1.44 MB
- Stars: 60
- Watchers: 9
- Forks: 14
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Laravel >= 5 Packer
[![Build Status](https://travis-ci.org/eusonlito/laravel-Packer.svg?branch=master)](https://travis-ci.org/eusonlito/laravel-Packer)
[![Latest Stable Version](https://poser.pugx.org/laravel/packer/v/stable.png)](https://packagist.org/packages/laravel/packer)
[![Total Downloads](https://poser.pugx.org/laravel/packer/downloads.png)](https://packagist.org/packages/laravel/packer)
[![License](https://poser.pugx.org/laravel/packer/license.png)](https://packagist.org/packages/laravel/packer)Inspired by: https://github.com/ceesvanegmond/minify
With this package you can pack and minify your existing css and javascript files. This process can be a little tough, this package simplies this process and automates it.
Also, you can resize/crop images to adapt thumbnails into your layouts.
If you want a Laravel <= 4.2 compatible version, please use `v4.2` branch.
## Installation
Begin by installing this package through Composer.
```js
{
"require": {
"eusonlito/laravel-packer": "master-dev"
}
}
```### Laravel installation
```php
// config/app.php
'providers' => [
'...',
'Eusonlito\LaravelPacker\PackerServiceProvider',
];'aliases' => [
'...',
'Packer' => 'Eusonlito\LaravelPacker\Facade',
];
```Publish the config file:
```
php artisan vendor:publish --provider="Eusonlito\LaravelPacker\PackerServiceProvider"
```Now you have a ```Packer``` facade available.
#### CSS
```php
// resources/views/hello.blade.php
// Pack a simple file
{!! Packer::css('/css/main.css', '/storage/cache/css/main.css') !!}// Pack a simple file using cache_folder option as storage folder to packed file
{!! Packer::css('/css/main.css', 'css/main.css') !!}// Packing multiple files
{!! Packer::css(['/css/main.css', '/css/bootstrap.css'], '/storage/cache/css/styles.css') !!}// Packing multiple files using cache_folder option as storage folder to packed file
{!! Packer::css(['/css/main.css', '/css/bootstrap.css'], 'css/styles.css') !!}// Packing multiple files with autonaming based
{!! Packer::css(['/css/main.css', '/css/bootstrap.css'], '/storage/cache/css/') !!}// pack and combine all css files in given folder
{!! Packer::cssDir('/css/', '/storage/cache/css/all.css') !!}// pack and combine all css files in given folder using cache_folder option as storage folder to packed file
{!! Packer::cssDir('/css/', 'css/all.css') !!}// Packing multiple folders
{!! Packer::cssDir(['/css/', '/theme/'], '/storage/cache/css/all.css') !!}// Packing multiple folders with recursive search
{!! Packer::cssDir(['/css/', '/theme/'], '/storage/cache/css/all.css', true) !!}// Packing multiple folders with recursive search and autonaming
{!! Packer::cssDir(['/css/', '/theme/'], '/storage/cache/css/', true) !!}// Packing multiple folders with recursive search and autonaming using cache_folder option as storage folder to packed file
{!! Packer::cssDir(['/css/', '/theme/'], 'css/', true) !!}
```
CSS `url()` values will be converted to absolute path to avoid file references problems.
#### Javascript
```php
// resources/views/hello.blade.php
...
// Pack a simple file
{!! Packer::js('/js/main.js', '/storage/cache/js/main.js') !!}// Pack a simple file using cache_folder option as storage folder to packed file
{!! Packer::js('/js/main.js', 'js/main.js') !!}// Packing multiple files
{!! Packer::js(['/js/main.js', '/js/bootstrap.js'], '/storage/cache/js/styles.js') !!}// Packing multiple files using cache_folder option as storage folder to packed file
{!! Packer::js(['/js/main.js', '/js/bootstrap.js'], 'js/styles.js') !!}// Packing multiple files with autonaming based
{!! Packer::js(['/js/main.js', '/js/bootstrap.js'], '/storage/cache/js/') !!}// pack and combine all js files in given folder
{!! Packer::jsDir('/js/', '/storage/cache/js/all.js') !!}// pack and combine all js files in given folder using cache_folder option as storage folder to packed file
{!! Packer::jsDir('/js/', 'js/all.js') !!}// Packing multiple folders
{!! Packer::jsDir(['/js/', '/theme/'], '/storage/cache/js/all.js') !!}// Packing multiple folders with recursive search
{!! Packer::jsDir(['/js/', '/theme/'], '/storage/cache/js/all.js', true) !!}// Packing multiple folders with recursive search and autonaming
{!! Packer::jsDir(['/js/', '/theme/'], '/storage/cache/js/', true) !!}// Packing multiple folders with recursive search and autonaming using cache_folder option as storage folder to packed file
{!! Packer::jsDir(['/js/', '/theme/'], 'js/', true) !!}
```
#### Images
All transform options availables at https://github.com/oscarotero/imageCow```php
// resources/views/hello.blade.php
...
// Set width size to 500px using cache_folder default parameter (from settings)
// Crop image to 200px square with custom cache folder (full path)
// Crop image to 200px square center middle with custom cache folder (using cache_folder as base)
// Crop image to 200px square center top with custom cache folder (using cache_folder as base)
```
### Config
```php
return array(/*
|--------------------------------------------------------------------------
| Current environment
|--------------------------------------------------------------------------
|
| Set the current server environment. Leave empty to laravel autodetect
|
*/'environment' => '',
/*
|--------------------------------------------------------------------------
| App environments to not pack
|--------------------------------------------------------------------------
|
| These environments will not be minified and all individual files are
| returned
|
*/'ignore_environments' => ['local'],
/*
|--------------------------------------------------------------------------
| Public accessible path
|--------------------------------------------------------------------------
|
| Set absolute folder path to public view from web. If you are using
| laravel, this value will be set with public_path() function
|
*/'public_path' => realpath(getenv('DOCUMENT_ROOT')),
/*
|--------------------------------------------------------------------------
| Asset absolute location
|--------------------------------------------------------------------------
|
| Set absolute URL location to asset folder. Many times will be same as
| public_path but using absolute URL. If you are using laravel, this value
| will be set with asset() function
|
*/'asset' => 'http://'.getenv('SERVER_NAME').'/',
/*
|--------------------------------------------------------------------------
| Base folder to store packed files
|--------------------------------------------------------------------------
|
| If you are using relative paths to second paramenter in css and js
| commands, this files will be created with this folder as base.
|
| This folder in relative to 'public_path' value
|
*/'cache_folder' => '/storage/cache/',
/*
|--------------------------------------------------------------------------
| Check if some file to pack have a recent timestamp
|--------------------------------------------------------------------------
|
| Compare current packed file with all files to pack. If exists one more
| recent than packed file, will be packed again with a new autogenerated
| name.
|
*/'check_timestamps' => true,
/*
|--------------------------------------------------------------------------
| Check if you want minify css files or only pack them together
|--------------------------------------------------------------------------
|
| You can check this option if you want to join and minify all css files or
| only join files
|
*/'css_minify' => true,
/*
|--------------------------------------------------------------------------
| Check if you want minify js files or only pack them together
|--------------------------------------------------------------------------
|
| You can check this option if you want to join and minify all js files or
| only join files
|
*/'js_minify' => true,
/*
|--------------------------------------------------------------------------
| Use fake images stored in src/images/ when original image does not exists
|--------------------------------------------------------------------------
|
| You can use fake images in your developments to avoid not existing
| original images problems. Fake images are stored in src/images/ and used
| with a rand
|
*/'images_fake' => true
);
```If you set the `'check_timestamps'` option, a timestamp value will be added to final filename.
### Using Packer outside Laravel
```php
require (__DIR__.'/vendor/autoload.php');// Check default settings
$config = require (__DIR__.'/src/config/config.php');$Packer = new Eusonlito\LaravelPacker\Packer($config);
echo $Packer->css([
'/resources/css/styles-1.css',
'/resources/css/styles-2.css'
], 'css/styles.css')->render();echo $Packer->js('/resources/js/scripts.js', 'js/scripts.js')->render();
echo $Packer->js([
'/resources/js/scripts-1.js',
'/resources/js/scripts-2.js'
], 'js/')->render();
```