1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | 'use strict';
|
7 | var fs = require('fs'),
|
8 | through2 = require('through2'),
|
9 | glob = require('glob');
|
10 |
|
11 |
|
12 | module.exports = function (indexPathStr) {
|
13 | return through2.obj(function (chunk, enc, callback) {
|
14 | if (chunk.isStream()) {
|
15 | this.emit('error', new gutil.PluginError('gulp-debug', 'Streaming not supported'));
|
16 | return cb();
|
17 | }
|
18 |
|
19 | if (!chunk.contents) {
|
20 | return cb();
|
21 | }
|
22 |
|
23 | var count = 0;
|
24 | for (var index in chunk.contents) {
|
25 | if (typeof(chunk.contents[index]) == "number")
|
26 | count += chunk.contents[index];
|
27 | }
|
28 | var pathList = chunk.path.split("\\").reverse();
|
29 | var targetFileName = pathList[1] + "/" + pathList[0];
|
30 | replaceIndex(indexPathStr, targetFileName, count.toString(16));
|
31 | this.push(chunk);
|
32 | callback()
|
33 | });
|
34 |
|
35 | function replaceIndex(ifile, transFileName, count) {
|
36 | var version = "?v=" + count;
|
37 | if (Object.prototype.toString.call(ifile) == "[object Array]") {
|
38 | ifile.forEach(function (i_ifile) {
|
39 | i_ifile && glob(i_ifile, function (err, i_files) {
|
40 | if (err) return console.error(err);
|
41 | i_files.forEach(function (i_ilist) {
|
42 |
|
43 | var result = fs.readFileSync(i_ilist, 'utf8')
|
44 | .replace(
|
45 | new RegExp(transFileName + "[?v=[0-9a-zA-Z]*]?", "g"),
|
46 | transFileName + version);
|
47 | fs.writeFileSync(i_ilist, result, 'utf8');
|
48 | })
|
49 | })
|
50 | })
|
51 | } else {
|
52 | ifile && glob(ifile, function (err, files) {
|
53 | if (err) return console.error(err);
|
54 | files.forEach(function (ilist) {
|
55 | var result = fs.readFileSync(ilist, 'utf8')
|
56 | .replace(
|
57 | new RegExp(transFileName + "[?v=[0-9a-zA-Z]*]?", "g"),
|
58 | transFileName + version
|
59 | );
|
60 | fs.writeFileSync(ilist, result, 'utf8');
|
61 | })
|
62 | })
|
63 | }
|
64 | }
|
65 | }; |
\ | No newline at end of file |