-
Notifications
You must be signed in to change notification settings - Fork 54
/
nova.mix.js
49 lines (39 loc) · 1.25 KB
/
nova.mix.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* eslint-disable import/no-extraneous-dependencies,class-methods-use-this */
const mix = require('laravel-mix');
const webpack = require('webpack');
const path = require('path');
const fs = require('fs');
const novaLocation = [
path.join(__dirname, '../../vendor/laravel/nova/resources/js/mixins/packages.js'),
path.join(__dirname, 'vendor/laravel/nova/resources/js/mixins/packages.js'),
].filter(fs.existsSync)[0] ?? '';
if (!novaLocation) {
throw new Error('Unable to locate Nova resources. Mount the extension in a Laravel installation, or run `composer install` in the extension directory.');
}
class NovaExtension {
name() {
return 'nova-extension';
}
register(name) {
this.name = name;
}
webpackPlugins() {
return new webpack.ProvidePlugin({
_: 'lodash',
Errors: 'form-backend-validation',
});
}
webpackConfig(webpackConfig) {
webpackConfig.externals = {
vue: 'Vue',
};
webpackConfig.resolve.alias = {
...(webpackConfig.resolve.alias || {}),
'laravel-nova': novaLocation,
};
webpackConfig.output = {
uniqueName: this.name,
};
}
}
mix.extend('nova', new NovaExtension());