A simple set of asset build tools that provides a config file and extensible integrations with pre-processors & minifiers.
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.
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'
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.
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:
cachePath
option tells MiniAsset where to store generated assets.paths[]
options tell MiniAsset where to find CSS files. Paths use glob syntax.filters[]
options let you configure which filters are applied to all CSS files.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.
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
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);
Please report any issues you have with the plugin to the issue
tracker on github.
Mini Asset is offered under an MIT license.
2010-2018 Mark Story (http://mark-story.com)
See the github contributors list.
See CHANGELOG for changes only available on master
. See
github releases for changelogs on previous releases.