Left file: appwork-v1_4_0/laravel-vue-starter/webpack.mix.js  
Right file: appwork-v1_5_0/laravel-vue-starter/webpack.mix.js  
1 const { EnvironmentPlugin } = require('webpack') = 1 const { EnvironmentPlugin } = require('webpack')
2 const mix = require('laravel-mix')   2 const mix = require('laravel-mix')
3 const glob = require('glob')   3 const glob = require('glob')
4 const path = require('path')   4 const path = require('path')
5     5  
6 /*   6 /*
7  |--------------------------------------------------------------------------   7  |--------------------------------------------------------------------------
8  | Mix config   8  | Mix config
9  |--------------------------------------------------------------------------   9  |--------------------------------------------------------------------------
10  */   10  */
11     11  
12 mix.options({   12 mix.options({
13     postCss: [require('autoprefixer')]   13     postCss: [require('autoprefixer')]
14 });   14 });
15     15  
16 /*   16 /*
17  |--------------------------------------------------------------------------   17  |--------------------------------------------------------------------------
18  | Webpack config   18  | Webpack config
19  |--------------------------------------------------------------------------   19  |--------------------------------------------------------------------------
20  */   20  */
21     21  
22 mix.webpackConfig({   22 mix.webpackConfig({
23     plugins: [   23     plugins: [
24         new EnvironmentPlugin({   24         new EnvironmentPlugin({
25             // Application's public url   25             // Application's public url
26             BASE_URL: '/'   26             BASE_URL: '/'
27         })   27         })
28     ],   28     ],
29     module: {   29     module: {
30         rules: [{   30         rules: [{
31             test: /node_modules(?:\/|\\).+\.js$/, <> 31             test: /node_modules(?:\/|\\).+\.m?js$/,
32             loader: 'babel-loader', = 32             loader: 'babel-loader',
33             include: [   33             include: [
34                 path.join(__dirname, 'node_modules/bootstrap-vue'),   34                 path.join(__dirname, 'node_modules/bootstrap-vue'),
35                 path.join(__dirname, 'node_modules/vuejs-datepicker'),   35                 path.join(__dirname, 'node_modules/vuejs-datepicker'),
36                 path.join(__dirname, 'node_modules/vue-echarts'),   36                 path.join(__dirname, 'node_modules/vue-echarts'),
37                 path.join(__dirname, 'node_modules/resize-detector'),   37                 path.join(__dirname, 'node_modules/resize-detector'),
38                 path.join(__dirname, 'node_modules/vue-c3'),   38                 path.join(__dirname, 'node_modules/vue-c3'),
39                 path.join(__dirname, 'node_modules/vue-masonry'),   39                 path.join(__dirname, 'node_modules/vue-masonry'),
40                 path.join(__dirname, 'node_modules/vue-cropper'),   40                 path.join(__dirname, 'node_modules/vue-cropper'),
41                 path.join(__dirname, 'node_modules/vuedraggable'),   41                 path.join(__dirname, 'node_modules/vuedraggable'),
    -+ 42                 path.join(__dirname, 'node_modules/sweet-modal-vue'),
42                 path.join(__dirname, 'node_modules/vue-simplemde'), = 43                 path.join(__dirname, 'node_modules/vue-simplemde'),
    <> 44                 path.join(__dirname, 'node_modules/vue2-dropzone'),
      45                 path.join(__dirname, 'node_modules/dropzone'),
43                 path.join(__dirname, 'node_modules/sweet-modal-vue'),   46                 path.join(__dirname, 'node_modules/marked'),
      47                 path.join(__dirname, 'node_modules/vue-plyr'),
      48                 path.join(__dirname, 'node_modules/swiper'),
      49                 path.join(__dirname, 'node_modules/dom7')
44             ], = 50             ],
45             options: { <> 51             options: Object.assign({}, require('./package.json').babel, {
46                 presets: [['@babel/preset-env', { targets: 'last 2 versions, ie >= 10' }]],      
47                 plugins: ['@babel/plugin-transform-destructuring', '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-transform-template-literals'],      
48                 babelrc: false = 52                 babelrc: false
49             } <> 53             })
50         }] = 54         }]
51     },   55     },
52     resolve: {   56     resolve: {
53         alias: {   57         alias: {
54             '@': path.join(__dirname, 'resources/assets/src'),   58             '@': path.join(__dirname, 'resources/assets/src'),
55             'node_modules': path.join(__dirname, 'node_modules')   59             'node_modules': path.join(__dirname, 'node_modules')
56         }   60         }
57     }   61     }
58 })   62 })
59     63  
60 /*   64 /*
61  |--------------------------------------------------------------------------   65  |--------------------------------------------------------------------------
62  | Vendor assets   66  | Vendor assets
63  |--------------------------------------------------------------------------   67  |--------------------------------------------------------------------------
64  */   68  */
65     69  
66 function mixAssetsDir(query, cb) {   70 function mixAssetsDir(query, cb) {
67     (glob.sync('resources/assets/' + query) || []).forEach(f => {   71     (glob.sync('resources/assets/' + query) || []).forEach(f => {
68         f = f.replace(/[\\\/]+/g, '/');   72         f = f.replace(/[\\\/]+/g, '/');
69         cb(f, f.replace('resources/assets', 'public'));   73         cb(f, f.replace('resources/assets', 'public'));
70     });   74     });
71 }   75 }
72     76  
73 const sassOptions = {   77 const sassOptions = {
74     implementation: () => require('node-sass')   78     implementation: () => require('node-sass')
75 };   79 };
76     80  
77 // Core javascripts   81 // Core javascripts
78 mixAssetsDir('vendor/js/**/*.js', (src, dest) => mix.scripts(src, dest));   82 mixAssetsDir('vendor/js/**/*.js', (src, dest) => mix.scripts(src, dest));
79     83  
80 // Fonts   84 // Fonts
81 mixAssetsDir('vendor/fonts/*.css', (src, dest) => mix.copy(src, dest));   85 mixAssetsDir('vendor/fonts/*.css', (src, dest) => mix.copy(src, dest));
82 mixAssetsDir('vendor/fonts/*/*', (src, dest) => mix.copy(src, dest));   86 mixAssetsDir('vendor/fonts/*/*', (src, dest) => mix.copy(src, dest));
83     87  
84 /*   88 /*
85  |--------------------------------------------------------------------------   89  |--------------------------------------------------------------------------
86  | Entry point   90  | Entry point
87  |--------------------------------------------------------------------------   91  |--------------------------------------------------------------------------
88  */   92  */
89     93  
90 mix.js('resources/assets/src/entry-point.js', 'public');   94 mix.js('resources/assets/src/entry-point.js', 'public');
91     95  
92 if (Mix.isUsing('hmr')) {   96 if (Mix.isUsing('hmr')) {
93     mix.disableNotifications();   97     mix.disableNotifications();
94 } else {   98 } else {
95     mix.version();   99     mix.version();
96 }   100 }