forked from wutongwan/laravel-lego
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.mix.js
43 lines (37 loc) · 1.33 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
const {mix} = require('laravel-mix');
const fs = require('file-system');
const del = require('del');
const _ = require('lodash');
const jsonfile = require('jsonfile');
const mixManifest = 'public/mix-manifest.json';
// global config.
mix.setPublicPath('public');
// for CoffeeScript
mix.webpackConfig({
module: {
rules: [
{test: /\.coffee$/, loader: 'coffee-loader'}
]
}
});
mix.js('resources/assets/grid/batch.coffee', 'public/js');
mix.version()
.then(function () {
jsonfile.readFile(mixManifest, function (err, obj) {
const newJson = {};
_.forIn(obj, function (value, key) {
const newFilename = value.replace(/([^\.]+)\.([^\?]+)\?id=(.+)$/g, '$1.$3.$2');
const oldAsGlob = value.replace(/([^\.]+)\.([^\?]+)\?id=(.+)$/g, '$1.*.$2');
// delete old versioned file
del.sync(['public' + oldAsGlob]);
// copy as new versioned
fs.copyFile('public' + key, 'public' + newFilename, function (err) {
if (err) console.error(err);
});
newJson[key] = newFilename;
});
jsonfile.writeFile(mixManifest, newJson, {spaces: 2}, function (err) {
if (err) console.error(err);
});
});
});