Left file: appwork-v1_5_2/laravel-starter/webpack.mix.js  
Right file: appwork-v1_6_0/laravel-starter/webpack.mix.js  
    <> 1 const { EnvironmentPlugin } = require('webpack')
1 const mix = require('laravel-mix');   2 const mix = require('laravel-mix')
2 const glob = require('glob') = 3 const glob = require('glob')
3 const path = require('path')   4 const path = require('path')
4     5  
5 /*   6 /*
6  |--------------------------------------------------------------------------   7  |--------------------------------------------------------------------------
    -+ 8  | Mix config
      9  |--------------------------------------------------------------------------
      10  */
      11  
      12 mix.options({
      13     resourceRoot: process.env.ASSET_URL || undefined,
      14     postCss: [require('autoprefixer')]
      15 })
      16  
      17 /*
      18  |--------------------------------------------------------------------------
7  | Configure Webpack = 19  | Configure Webpack
8  |--------------------------------------------------------------------------   20  |--------------------------------------------------------------------------
9  */   21  */
10     22  
11 mix.webpackConfig({   23 mix.webpackConfig({
12     output: {   24     output: {
    -+ 25         publicPath: process.env.ASSET_URL || undefined,
13         libraryTarget: 'window' = 26         libraryTarget: 'window'
14     },   27     },
    -+ 28     plugins: [
      29         new EnvironmentPlugin({
      30             // Application's public url
      31             BASE_URL: process.env.ASSET_URL ? `${process.env.ASSET_URL}/` : '/'
      32         })
      33     ],
15     module: { = 34     module: {
16         rules: [{   35         rules: [{
17             test: /\.js$/,   36             test: /\.js$/,
18             include: [   37             include: [
19                 path.join(__dirname, 'node_modules/bootstrap/'),   38                 path.join(__dirname, 'node_modules/bootstrap/'),
20                 path.join(__dirname, 'node_modules/bootstrap-slider/'),   39                 path.join(__dirname, 'node_modules/bootstrap-slider/'),
21                 path.join(__dirname, 'node_modules/popper.js/'),   40                 path.join(__dirname, 'node_modules/popper.js/'),
22                 path.join(__dirname, 'node_modules/bootstrap-table/'),   41                 path.join(__dirname, 'node_modules/bootstrap-table/'),
23                 path.join(__dirname, 'node_modules/shepherd.js/'),   42                 path.join(__dirname, 'node_modules/shepherd.js/'),
24                 path.join(__dirname, 'node_modules/flot/'),   43                 path.join(__dirname, 'node_modules/flot/'),
25                 path.join(__dirname, 'node_modules/plyr/'),   44                 path.join(__dirname, 'node_modules/plyr/'),
26                 path.join(__dirname, 'node_modules/rangetouch/')   45                 path.join(__dirname, 'node_modules/rangetouch/')
27             ],   46             ],
28             loader: 'babel-loader',   47             loader: 'babel-loader',
29             options: {   48             options: {
30                 presets: [['@babel/preset-env', { targets: 'last 2 versions, ie >= 10' }]],   49                 presets: [['@babel/preset-env', { targets: 'last 2 versions, ie >= 10' }]],
31                 plugins: ['@babel/plugin-transform-destructuring', '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-transform-template-literals'],   50                 plugins: ['@babel/plugin-transform-destructuring', '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-transform-template-literals'],
32                 babelrc: false   51                 babelrc: false
33             }   52             }
34         }]   53         }]
35     },   54     },
36     externals: {   55     externals: {
37         'jquery': 'jQuery',   56         'jquery': 'jQuery',
38         'moment': 'moment',   57         'moment': 'moment',
39         'datatables.net': '$.fn.dataTable',   58         'datatables.net': '$.fn.dataTable',
40         'spin.js': 'Spinner',   59         'spin.js': 'Spinner',
41         'jsdom': 'jsdom',   60         'jsdom': 'jsdom',
42         'd3': 'd3',   61         'd3': 'd3',
43         'eve': 'eve',   62         'eve': 'eve',
44         'velocity': 'Velocity',   63         'velocity': 'Velocity',
45         'hammer': 'Hammer',   64         'hammer': 'Hammer',
46         'raphael': 'Raphael',   65         'raphael': 'Raphael',
47         'jquery-mapael': 'Mapael',   66         'jquery-mapael': 'Mapael',
48         'pace': '"pace-progress"',   67         'pace': '"pace-progress"',
49         'popper.js': 'Popper',   68         'popper.js': 'Popper',
50         'jquery-validation': 'jQuery',   69         'jquery-validation': 'jQuery',
51     70  
52         // blueimp-file-upload plugin   71         // blueimp-file-upload plugin
53         'canvas-to-blob': 'blueimpDataURLtoBlob',   72         'canvas-to-blob': 'blueimpDataURLtoBlob',
54         'blueimp-tmpl': 'blueimpTmpl',   73         'blueimp-tmpl': 'blueimpTmpl',
55         'load-image': 'blueimpLoadImage',   74         'load-image': 'blueimpLoadImage',
56         'load-image-meta': 'null',   75         'load-image-meta': 'null',
57         'load-image-scale': 'null',   76         'load-image-scale': 'null',
58         'load-image-exif': 'null',   77         'load-image-exif': 'null',
59         'jquery-ui/ui/widget': 'null',   78         'jquery-ui/ui/widget': 'null',
60         './jquery.fileupload': 'null',   79         './jquery.fileupload': 'null',
61         './jquery.fileupload-process': 'null',   80         './jquery.fileupload-process': 'null',
62         './jquery.fileupload-image': 'null',   81         './jquery.fileupload-image': 'null',
63         './jquery.fileupload-video': 'null',   82         './jquery.fileupload-video': 'null',
64         './jquery.fileupload-validate': 'null',   83         './jquery.fileupload-validate': 'null',
65     84  
66         // blueimp-gallery plugin   85         // blueimp-gallery plugin
67         './blueimp-helper': 'jQuery',   86         './blueimp-helper': 'jQuery',
68         './blueimp-gallery': 'blueimpGallery',   87         './blueimp-gallery': 'blueimpGallery',
69         './blueimp-gallery-video': 'blueimpGallery'   88         './blueimp-gallery-video': 'blueimpGallery'
70     }   89     }
71 })   90 })
72     91  
73 /*   92 /*
74  |--------------------------------------------------------------------------   93  |--------------------------------------------------------------------------
75  | Vendor assets   94  | Vendor assets
76  |--------------------------------------------------------------------------   95  |--------------------------------------------------------------------------
77  */   96  */
78     97  
79 function mixAssetsDir(query, cb) {   98 function mixAssetsDir(query, cb) {
80     (glob.sync('resources/assets/' + query) || []).forEach(f => {   99     (glob.sync('resources/assets/' + query) || []).forEach(f => {
81         f = f.replace(/[\\\/]+/g, '/'); <> 100         f = f.replace(/[\\\/]+/g, '/')
82         cb(f, f.replace('resources/assets', 'public'));   101         cb(f, f.replace('resources/assets', 'public'))
83     });   102     })
84 } = 103 }
85     104  
86 const sassOptions = {   105 const sassOptions = {
87     implementation: () => require('node-sass') <> 106     implementation: require('node-sass')
88 };   107 }
89   = 108  
90 // Core stylesheets   109 // Core stylesheets
91 mix.sass('resources/assets/vendor/sass/bootstrap.scss', 'public/vendor/css', sassOptions)   110 mix.sass('resources/assets/vendor/sass/bootstrap.scss', 'public/vendor/css', sassOptions)
92    .sass('resources/assets/vendor/sass/appwork.scss', 'public/vendor/css', sassOptions)   111    .sass('resources/assets/vendor/sass/appwork.scss', 'public/vendor/css', sassOptions)
93    .sass('resources/assets/vendor/sass/theme-corporate.scss', 'public/vendor/css', sassOptions)   112    .sass('resources/assets/vendor/sass/theme-corporate.scss', 'public/vendor/css', sassOptions)
94    .sass('resources/assets/vendor/sass/colors.scss', 'public/vendor/css', sassOptions)   113    .sass('resources/assets/vendor/sass/colors.scss', 'public/vendor/css', sassOptions)
95    .sass('resources/assets/vendor/sass/uikit.scss', 'public/vendor/css', sassOptions); <> 114    .sass('resources/assets/vendor/sass/uikit.scss', 'public/vendor/css', sassOptions)
96   = 115  
97 // Core javascripts   116 // Core javascripts
98 mixAssetsDir('vendor/js/**/*.js', (src, dest) => mix.js(src, dest)); <> 117 mixAssetsDir('vendor/js/**/*.js', (src, dest) => mix.js(src, dest))
99   = 118  
100 // Libs   119 // Libs
101 mixAssetsDir('vendor/libs/**/*.js', (src, dest) => mix.js(src, dest)); <> 120 mixAssetsDir('vendor/libs/**/*.js', (src, dest) => mix.js(src, dest))
102 mixAssetsDir('vendor/libs/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/\.scss$/, '.css'), sassOptions));   121 mixAssetsDir('vendor/libs/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/\.scss$/, '.css'), sassOptions))
103   = 122  
104 // Pages   123 // Pages
105 mixAssetsDir('vendor/sass/pages/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/(\\|\/)sass(\\|\/)/, '$1css$2').replace(/\.scss$/, '.css'), sassOptions)); <> 124 mixAssetsDir('vendor/sass/pages/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/(\\|\/)sass(\\|\/)/, '$1css$2').replace(/\.scss$/, '.css'), sassOptions))
106   = 125  
107 // Fonts   126 // Fonts
108 mixAssetsDir('vendor/fonts/*.css', (src, dest) => mix.copy(src, dest)); <> 127 mixAssetsDir('vendor/fonts/*.css', (src, dest) => mix.copy(src, dest))
109 mixAssetsDir('vendor/fonts/*/*', (src, dest) => mix.copy(src, dest));   128 mixAssetsDir('vendor/fonts/*/*', (src, dest) => mix.copy(src, dest))
110   = 129  
111 /*   130 /*
112  |--------------------------------------------------------------------------   131  |--------------------------------------------------------------------------
113  | Application assets   132  | Application assets
114  |--------------------------------------------------------------------------   133  |--------------------------------------------------------------------------
115  */   134  */
116     135  
117 mix.js('resources/assets/js/application.js', 'public/js')   136 mix.js('resources/assets/js/application.js', 'public/js')
118    .sass('resources/assets/sass/application.scss', 'public/css'); <> 137    .sass('resources/assets/sass/application.scss', 'public/css')
119   = 138  
120 mix.version(); <> 139 mix.version()