By default sites initiated by Tapestries init command come with support for Laravel Elixir.

Elixir is a clean, fluent API for Gulp which came bundled with Laravel versions 5.0 to 5.3; in order to use it you first need to make sure that you have Node.js and NPM installed. Then pull in the dependencies needed to compile your assets:

$ npm install

Each project initiated with Tapestry will have the following Elixir packages installed and configured:

  • imagemin: This attempts to optimise your images, reducing filesize without compromising quality.
  • browserify: This lets your require modules in the browser by bundling up all of your javascript dependencies.
  • exec: This is used so that gulp can execute Tapestry once all assets have been compiled.
  • browserSync: This serves your built files locally and refreshes the browser when files have been updated.

_assets folder structure

The default folder for your projects assets is source/_assets, it has the following folder structure:

└── source/
    └── _assets/
        ├── img
        ├── js
        └── less

Elixir will look for each asset type – e.g. Less, js, – in a subfolder named after that asset type; this behavior can be changed but requires additional configuration so is best avoided.

Once compiled, Elixir will output each asset type to an appropriate folder within source, e.g. source/css.

Compiling your assets

To compile your assets run:

$ gulp

Once gulp has completed it will have already executed Tapestry so your build_local folder will now be up to date with your changes.

Watching for changes

To have Gulp watch your project for changes and compile on demand run:

$ gulp watch

The watch command prompts Elixir to monitor your source folder and recompile each time a file is modified, using the watch command enables BrowserSync; this will open a new browser with the compiled project opened and automatically reload the page each time the project get recompiled.