laravel-mix-modular

1.0.2 • Public • Published

Laravel Mix Modular

Compile assets for your Laravel modules from the root of your application.

In this context a Laravel module is a Composer package that can also act as a NPM package.

Concept

A Composer package that resides in the vendor directory of your Laravel application.

The package also contains a package.json and a module.js.

The package.json is responsible for telling the application which dependencies this package needs, and you would need to pull it in to your appliactions package.json as such. You can do that by adding it as a file dependency.

...
"foo-package""file:./vendor/acme/foo"
...

The module.js contains an object that tells this plugin which entries it wants compiled, and which vendors to extract.

module.exports = {
    vendors: ['vue'],
 
    entries: {
        'app.js': 'foo.js',
        'app.scss': 'foo.css'
    }
};

Please be aware that using the extraction does not work with using extract in your application itself.

Using it

const mix = require('laravel-mix');
require('laravel-mix-modular');
 
mix
    .js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .modular({
        vendor: 'acme'
    });

This will build all modules that have a module.js file to the public directory set by Mix. Usually this will result in public/js/modules/foo.js and public/css/modules/foo.css.

You can modify the default options by passing an object as the second argument.

{
    extract: true, // controls whether vendor extraction is enabled
    entryFile: 'module.js', // the file to look for when finding modules
    resourcesDirectory: 'resources', // where assets are located in your modules
    modulesPath: 'modules', // the directory when compiled module assets land
    path: 'vendor', // the path to the directory where your modules are located
}

Readme

Keywords

none

Package Sidebar

Install

npm i laravel-mix-modular

Weekly Downloads

1

Version

1.0.2

License

MIT

Unpacked Size

4.65 kB

Total Files

4

Last publish

Collaborators

  • tormorten