Mercurial > piecrust2
view docs/docs/05_asset-pipeline.md @ 595:eeb205ab8583
cm: Add requirements for FoodTruck.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 20 Jan 2016 21:35:58 -0800 |
parents | c7e9001c74c2 |
children | 31f2964d034a |
line wrap: on
line source
--- title: Asset Pipeline --- PieCrust comes with a simple, yet efficient, asset pipeline. If you have advanced requirements, or want to use something familiar, you can of course use well known systems like [Grunt][] or [Gulp][], but you should definitely give the PieCrust asset pipeline a try. The PieCrust asset pipeline doesn't require a build file: asset processors are enabled more or less globally, and will affect all assets the same way inside a given asset directory. ## Assets directories By default, the asset pipeline will process only one assets directory, `assets/`. You can change or add directories with the `baker/assets_dirs` setting in the website configuration. For each file found in an assets directory, the pipeline will either: * Ignore it, if it matches the `baker/ignore` patterns. By default, those patterns include common temporary files like `.DS_Store` and `Thumbs.db` files, and common source control files like `.git`, `.hg`, and `.svn`. * Process it, if it matches any of the active asset processors. The output of the processing phase will be put in the output directory. * Copy it as is, if not asset processor was found. Just like for processing, the relative path of the asset is preserved in the output directory. ## Asset Processing As mentioned in the previous section, each asset file will be matched against available asset processors. Most processors will accept a file based on its extension, although some processors use other conditions. Processors have a priority, so for instance the `copy` processor, which accepts _all_ files, will be matched last. The key element however is that the PieCrust pipeline is a _multi-step_ processing pipeline. The output of the first matched processor will be itself matched again against all the other processors... and so on, until no more processors match and the `copy` processor copies the result to the output(s) directory. So for instance, you if you have a LessCSS file, it will be processed like so: foo.less -> foo.css -> foo.min.css The `.less` extension gets matched to the LessCSS processor, which outputs a standard `.css` file. This file gets picked up by the CleanCSS processor, which minifies the file, and can optionally add the `.min` suffix. There's no other processors that can handle a `.css` file, so the resulting `foo.min.css` is copied to the output directory. [Grunt]: http://gruntjs.com/ [Gulp]: http://gulpjs.com/ [procref]: {{docurl('reference/asset-processors')}}