-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.mix.js
113 lines (97 loc) · 3.71 KB
/
webpack.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
const mix = require('laravel-mix');
const glob = require('glob')
const path = require('path')
/*
|--------------------------------------------------------------------------
| Configure Webpack
|--------------------------------------------------------------------------
*/
mix.webpackConfig({
output: {
libraryTarget: 'window'
},
module: {
rules: [{
test: /\.js$/,
include: [
path.join(__dirname, 'node_modules/bootstrap/'),
path.join(__dirname, 'node_modules/bootstrap-slider/'),
path.join(__dirname, 'node_modules/popper.js/'),
path.join(__dirname, 'node_modules/bootstrap-table/'),
path.join(__dirname, 'node_modules/shepherd.js/'),
path.join(__dirname, 'node_modules/flot/')
],
loader: 'babel-loader',
options: {
presets: [['@babel/preset-env', { targets: 'last 2 versions, ie >= 10' }]],
plugins: ['@babel/plugin-transform-destructuring', '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-transform-template-literals'],
babelrc: false
}
}]
},
externals: {
'jquery': 'jQuery',
'moment': 'moment',
'datatables.net': '$.fn.dataTable',
'spin.js': 'Spinner',
'jsdom': 'jsdom',
'd3': 'd3',
'eve': 'eve',
'velocity': 'Velocity',
'hammer': 'Hammer',
'raphael': 'Raphael',
'jquery-mapael': 'Mapael',
'pace': '"pace-progress"',
'popper.js': 'Popper',
'jquery-validation': 'jQuery',
// blueimp-file-upload plugin
'canvas-to-blob': 'blueimpDataURLtoBlob',
'blueimp-tmpl': 'blueimpTmpl',
'load-image': 'blueimpLoadImage',
'load-image-meta': 'null',
'load-image-scale': 'null',
'load-image-exif': 'null',
'jquery-ui/ui/widget': 'null',
'./jquery.fileupload': 'null',
'./jquery.fileupload-process': 'null',
'./jquery.fileupload-image': 'null',
'./jquery.fileupload-video': 'null',
'./jquery.fileupload-validate': 'null',
// blueimp-gallery plugin
'./blueimp-helper': 'jQuery',
'./blueimp-gallery': 'blueimpGallery',
'./blueimp-gallery-video': 'blueimpGallery'
}
})
/*
|--------------------------------------------------------------------------
| Vendor assets
|--------------------------------------------------------------------------
*/
function mixAssetsDir(query, cb) {
(glob.sync('resources/assets/' + query) || []).forEach(f => {
f = f.replace(/[\\\/]+/g, '/');
cb(f, f.replace('resources/assets', 'public'));
});
}
const sassOptions = {
implementation: () => require('node-sass')
};
// Core stylesheets
mixAssetsDir('vendor/sass/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/(\\|\/)sass(\\|\/)/, '$1css$2').replace(/\.scss$/, '.css'), sassOptions));
// Core javascripts
mixAssetsDir('vendor/js/**/*.js', (src, dest) => mix.js(src, dest));
// Libs
mixAssetsDir('vendor/libs/**/*.js', (src, dest) => mix.js(src, dest));
mixAssetsDir('vendor/libs/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/\.scss$/, '.css'), sassOptions));
// Fonts
mixAssetsDir('vendor/fonts/*.css', (src, dest) => mix.copy(src, dest));
mixAssetsDir('vendor/fonts/*/*', (src, dest) => mix.copy(src, dest));
/*
|--------------------------------------------------------------------------
| Application assets
|--------------------------------------------------------------------------
*/
mixAssetsDir('js/**/*.js', (src, dest) => mix.scripts(src, dest));
mixAssetsDir('css/**/*.css', (src, dest) => mix.copy(src, dest));
mix.version();