This is a simple imagemin wrapper around Laravel Elixir. Add it to your Elixir-enhanced Gulpfile, like so:
npm install --save-dev laravel-elixir-imagemin
var elixir = require('laravel-elixir');
require('laravel-elixir-imagemin');
elixir(function(mix) {
mix.imagemin();
});
This will scan your resources/assets/images
directory for all image files.
If you want to process a different image directory, you can update your Elixir config by either:
You can define elixir.config.images
in your gulpfile.js
like so:
var elixir = require('laravel-elixir');
require('laravel-elixir-imagemin');
elixir.config.images = {
folder: 'img',
outputFolder: 'img'
};
elixir(function(mix) {
mix.imagemin();
});
You can create an elixir.json
file in your project root to modify Elixir's default settings.
{
"images": {
"folder": "img",
"outputFolder": "img"
}
}
If you're upgrading from the old syntax, where you defined custom directories like so:
mix.imagemin("./resources/assets/img", "public/images/foo/bar/");
All you have to do is:
- Remove the first two parameters, then
- Follow the instructions for "Changing the default image directories"
Note: You don't define the full path anymore. Instead of resources/assets/img
you simply use img
, because
laravel-elixir-imagemin will look inside your assets
and public
directories (or whatever else you may have
configured).
You can override the default imagemin options by passing in an options object like so:
mix.imagemin({
optimizationLevel: 3,
progressive: true,
interlaced: true
});
Available imagemin options are listed here in the gulp-imagemin readme.