markstory / mini-asset
An asset compression library. Provides file concatenation and a flexible filter system for preprocessing and minification.
Installs: 585 055
Dependents: 5
Suggesters: 0
Security: 0
Stars: 64
Watchers: 6
Forks: 17
Open Issues: 6
Requires
- php: >=8.1,<9
- league/climate: ~3.0
Requires (Dev)
Suggests
- matthiasmullie/minify: For using Minify filter.
- natxet/CssMin: For using the CssMin filter.
- oyejorge/less.php: For using the LessDotPHP filter, see https://github.com/oyejorge/less.php
- scssphp/scssphp: For using the ScssPHP filter.
- tchwork/jsqueeze: For using the JSqueeze filter.
- tedivm/jshrink: For using the JShrink filter.
- zendframework/diactoros: The middleware layer relies on zendframework/diactoros.
- 2.x-dev
- 2.1.1
- 2.1.0
- 2.0.0
- 1.12.2
- 1.12.1
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.1
- 1.9.0
- 1.8.1
- 1.8.0
- 1.7.4
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.0
- 1.5.0
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.1.1
- 0.0.10
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-master
This package is auto-updated.
Last update: 2024-12-15 17:04:51 UTC
README
Mini Asset is a small footprint library that provide tools to assist in building an asset minification/optimization pipeline. It uses a simple INI based configuration file that lets you define output files, that are comprised of a number of input files. Input files can be processed by filters on a per-extension or per file basis. Filters allow you to integrate existing pre-processors and minifiers or build your own.
Features
- Built-in support for LESScss, Sass and CoffeeScript, as well as several minifiers.
- Powerful and flexible filter system allowing you to add your own minifiers/pre-processors.
- Simple ini configuration files.
- Incremental builds that don't recompile assets when they don't need to be.
- Command Line Tools for building and clearing assets.
Installing
Add this library to your application with composer, after that you can start integrating MiniAsset into your application and use the provided CLI tools to generate asset targets:
php composer.phar require 'markstory/mini-asset'
Usage
Before MiniAsset can do anything, you'll need to define a configuration file to define your asset and which filters apply to them. For example purposes, we'll assume you have some CSS files that need to be minified.
Defining a configuration file
In your application's configuration directory create a file called
assets.ini
. In this file we'll put all the configuration that MiniAsset
needs. We'll cover how to use multiple configuration files later on. Assuming your,
application has a app.css
and reset.css
put the following in your config file:
[css] cachePath = WEBROOT/cache_css/ paths[] = WEBROOT/css/* filters[] = SimpleCssMin [app.css] files[] = reset.css files[] = app.css
The above also assumes that WEBROOT
resolves to your application's document
root. In the above we defined a few sections. First, the [css]
section defines how all
CSS files should behave:
- The
cachePath
option tells MiniAsset where to store generated assets. - The
paths[]
options tell MiniAsset where to find CSS files. Paths use glob syntax. - The
filters[]
options let you configure which filters are applied to all CSS files. Filters are applied in the order they are defined.
We also defined an [app.css]
section. This section defines the files that are used to
create WEBROOT/cache_css/app.css
when it is generated. We've added two files.
See the sample configuration file for an annotated sample configuration file.
Use the CLI tool to build your asset
With a build target defined, we can now generate our asset. We can use the CLI tool to generate our assets:
vendor/bin/mini_asset build --config /path/to/assets.ini
The above should generate output indicating that the all.css
file we defined
was compiled. If we were to re-run the above command all.css
would be skipped.
MiniAsset is smart enough to know when the components of a build target change and
only re-build files when it is necessary.
You can also use the mini_asset
CLI tool to clear targets:
vendor/bin/mini_asset clear --config /path/to/assets.ini
PSR7 Middleware
Mini-asset provides a PSR7 middleware adapter that implements the pattern found in zendframework/zend-stratagility and SlimPHP. Before you can use the middleware provided by mini-asset be sure to setup a config file with your assets. Next, integrate mini-asset into your middleware stack. For example in a SlimPHP app you would do:
use MiniAsset\AssetConfig; use MiniAsset\Middleware\AssetMiddleware; $assetConfig = AssetConfig::buildFromIniFile(__DIR__ . '../config/assets.ini'); $assets = new AssetMiddleware($assetConfig); $app->add($assets);
Framework Integrations
- CakePHP - AssetCompress plugin.
Issues
Please report any issues you have with the plugin to the issue tracker on github.
License
Mini Asset is offered under an MIT license.
Copyright
2010-2018 Mark Story (http://mark-story.com)
Authors
See the github contributors list.
Changelog
See CHANGELOG for changes only available on master
. See
github releases for changelogs on previous releases.