Laravel Mix plugin to auto extract 3rd party dependencies as vendor.js
.
📣 Notice: This feature has been added to Laravel Mix v4.0 now. 🎉
- Laravel Mix already has a
extract()
method which accepts an array of dependencies that you want to extract asvendor.js
- Whenever you install a new package, you also need to update this list to make it work.
- Read more on this issue
- This plugin will auto extract all js dependencies coming from
node_modules
tovendor.js
file. - You just need to reference them in your code somewhere. For example:
// app.js
import Vue from 'vue';
import axios from 'axios';
- Now
vue
andaxios
will be auto extracted tovendor.js
file
- Laravel Mix >=2.1.0 <4.0.0
# npm
npm install laravel-mix-auto-extract --save
# yarn
yarn add laravel-mix-auto-extract
Update your webpack.mix.js
const mix = require('laravel-mix');
// Require this package
require('laravel-mix-auto-extract');
// Your code may go here
// mix.js('./resources/assets/js/app.js', './public/js/app.js')
// mix.version()
// Call this method at last
mix.autoExtract();
Then update your blade template
<script src="{{ mix('js/manifest.js') }}"></script>
<script src="{{ mix('js/vendor.js') }}"></script>
<script src="{{ mix('js/app.js') }}"></script>
Remove any reference to extract()
method in webpack.mix.js
Here are the default options, all of them are optional.
mix.autoExtract({
vendorPath: 'js/vendor', // Don't suffix paths with `.js`
manifestPath: 'js/manifest',
excludeRegExp: /^.*\.(css|scss|sass|less|styl)$/,
generateManifest: true,
});
Paths are relative to the default output directory, usually ./public
.
Don't use autoExtract()
method along with extract()
method.
Please see CHANGELOG for more information what has changed recently.
MIT License