bluora/laravel-php-elixir

This package is abandoned and no longer maintained. The author suggests using the hnhdigital-os/laravel-php-elixir package instead.

Provides a PHP based equivalent to Node.js based Elixir

v3.0.4 2019-03-08 01:01 UTC

README

__________.__          ___________.__  .__       .__        
\______   \  |__ ______\_   _____/|  | |__|__  __|__|______ 
 |     ___/  |  \\____ \|    __)_ |  | |  \  \/  /  \_  __ \
 |    |   |   Y  \  |_> >        \|  |_|  |>    <|  ||  | \/
 |____|   |___|  /   __/_______  /|____/__/__/\_ \__||__|   
               \/|__|          \/               \/          

Provides a replacement of the Node.js based elixir pre-packaged with Laravel Framework. Tasks are sequentially run in the order that they are declared in the configuration file. You can specify more than one task module block.

Latest Stable Version Total Downloads Latest Unstable Version Built for Laravel License

Build Status StyleCI Test Coverage Issue Count Code Climate

This package has been developed by H&H|Digital, an Australian botique developer. Visit us at hnh.digital.

Pre-install requirement

This package requires ext-inotify which can be installed by:

$ pecl install inotify

You will likely need to enable this extension. You can use the following (may not match your specific OS settings).

$ echo "extension=inotify.so" | sudo tee /etc/php/7.1/mods-available/inotify.ini && sudo ln -s /etc/php/7.1/mods-available/inotify.ini /etc/php/7.1/cli/conf.d/20-inotify.ini

Install

Via composer:

$ composer require-dev bluora/laravel-php-elixir ~2.0

Enable the service provider by editing config/app.php:

    'providers' => [
        ...
        Bluora\PhpElixir\ServiceProvider::class,
        ...
    ];

Usage

Run the command with the default config file (.elixir.yml).

$ php artisan elixir

Run the command with a custom config file:

$ php artisan elixir --config=***

Run the folder watcher to automatically run elixir on file changes with the default config file (.elixir.yml).

$ php artisan elixir:watch

Run the folder watcher to automatically run elixir on file changes using a custom config file:

$ php artisan elixir:watch --config=***

Configuration

Configuration for this package is done in the '.elixir.yml' located in your base directory or in the 'vendor/bluora/laravel-php-elixir/src/.elixir.yml.example'.

First declare the task name and the class name in the configuration file (these modules are installed by default).

modules:
    combine:
        - Bluora\PhpElixirCombine\CombineModule
    copy:
        - Bluora\PhpElixirCopy\CopyModule
    empty:
        - Bluora\PhpElixirEmpty\EmptyModule
    exec:
        - Bluora\PhpElixirExec\ExecModule
    replace:
        - Bluora\PhpElixirReplace\ReplaceModule
    revision:
        - Bluora\PhpElixirRevision\RevisionModule
    sass:
        - Bluora\PhpElixirSass\SassModule

List tasks using the first level in the YAML file or, if you need to declare more than one task module in different location of the config file, simply prepend the task with a number (unique to the task) and a hash. For example:

copy:
    xxx: yyy
1#copy:
    zzz: aaa

If you are testing php-elixir, you can stop tasks from running by prepending them with an exclaimation mark (!).

!copy:
    xxx: yyy

Options

  • dry-run - runs the script but doesn't actually do anything.
  • verbose - provides further feedback of what is happening.
options:
    dry-run: true
    verbose: true

Paths

Paths lets you declare path constants that can be used in your other tasks.

paths:
    PATH_SASS: resources/assets/sass
    PATH_BOWER: bower_components
    PATH_PUBLIC_ASSETS: public/assets
    PATH_PUBLIC_BUILD: public/build
    PATH_RESOURCES: resources
    PATH_RES_ASSET_IMAGES: resources/assets/images

Watch

Watch configuruation item is only used by the elixir:watch console command.

watch:
    - PATH_RESOURCES?filter=!php

Empty

Deletes all files and folders in the listed paths.

empty:
    - PATH_PUBLIC_ASSETS
    - PATH_PUBLIC_BUILD

Exec

Executes a given file and arguments.

exec:
    php: artisan inspire

SASS

Processes and compiles a *.scss file and outputs it to specified path.

Formatted as: {SOURCE_FILE_PATH}: {DESTINATION_FILE_PATH}

sass:
    PATH_SASS + /app.scss: PATH_PUBLIC_ASSETS + /vendor/app.css

Combine

Gets the contents of one or many files and combines it into the specified file.

Source folders can be specified with single level or multi-level lookup, and the ability to filter files by extension.

{DESTINATION_FILE}:
    - {SOURCE_FILE}
    - {SOURCE_FOLDER}
combine:
    PATH_PUBLIC_ASSETS + /vendor/jquery-combined.min.js:
        - PATH_PUBLIC_ASSETS + /vendor/jquery/jquery.min.js
        - PATH_PUBLIC_ASSETS + /vendor/jquery-ui/jquery-ui.min.js
    PATH_PUBLIC_ASSETS + /vendor/combined.js:
        - PATH_PUBLIC_ASSETS + /vendor/**?filter=js

Copy

Copies files from a file path or a folder path to a specified folder or file name.

Folder paths can be configured to get the top level directory using '/*' or for all files and folders in path by using '/**'.

Further configuration can be added using the standard query string format.

  • filter - comma deliminated list of extensions.
copy:
    PATH_BOWER + /jquery/dist/jquery.min.js: PATH_PUBLIC_ASSETS + /vendor/jquery/
    PATH_RES_ASSET_IMAGES + /**?filter=png: PATH_PUBLIC_ASSETS + /images/

Replace

You can replace specific text in files or folder paths.

replace:
    PATH_PUBLIC_ASSETS + /vendor/vendor_name/styles.css:
        - ../img
        - vendor/vendor_name

Revision

Provides revisioning of files in a specified folder location.

Options that are available:

  • hash_length - defaults is 8.
  • minify - default is false.
  • php_manifest - generates a php equivalent of the json revision file.
{SOURCE_FOLDER}:
    - {DESTINATION_FOLDER}
    - {REVISION_MANIFEST_FILE}
    - {QUERY_STRING_OPTIONS}
revision:
    PATH_PUBLIC_ASSETS:
        - PATH_PUBLIC_BUILD
        - PATH_PUBLIC_BUILD + /rev-manifest.json
        - hash_length=12&minify=true&php_manifest=true

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.