UNPKG

2.32 kBJavaScriptView Raw
1/**
2 * Author: HELEX;
3 * Create Time: 2016-11-28 13:48
4 * Description:
5 */
6'use strict';
7var fs = require('fs'),
8 through2 = require('through2'),
9 glob = require('glob');
10
11
12module.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