UNPKG

2.6 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var fs = require("fs");
4var path = require("path");
5var crc32 = require("crc32");
6var FileUtil_1 = require("./tool/FileUtil");
7var FileCrc32 = /** @class */ (function () {
8 function FileCrc32(baseUrl) {
9 var self = this;
10 var xmUrl = self.getXMUrl(baseUrl);
11 var relUrl = path.join(xmUrl, 'bin-release');
12 FileUtil_1.FileUtil.rmdirSync(path.join(relUrl, 'resource'));
13 var defaultUrl = path.join(xmUrl, 'resource', 'default.res.json');
14 var defData = JSON.parse(fs.readFileSync(defaultUrl, 'utf-8'));
15 var resources = defData.resources;
16 var res;
17 for (var i = 0, len = resources.length; i < len; i++) {
18 res = resources[i];
19 var resHash = '';
20 var itemUrl = path.join(xmUrl, 'resource', res.url);
21 if (res.type == 'sheet') {
22 var filename = FileUtil_1.FileUtil.filename(itemUrl);
23 var sheetJson = JSON.parse(fs.readFileSync(itemUrl, 'utf-8'));
24 var pngNameArr = sheetJson.file.split('.');
25 var hash = self.hashItem(path.join(path.dirname(itemUrl), sheetJson.file));
26 sheetJson.file = pngNameArr[0] + '_' + hash + '.' + pngNameArr[1];
27 resHash = self.hashItem(itemUrl, new Buffer(JSON.stringify(sheetJson)));
28 }
29 else {
30 resHash = self.hashItem(itemUrl);
31 }
32 var resUrlArr = res.url.split('.');
33 var ext = resUrlArr.pop();
34 res.url = resUrlArr.join('.') + '_' + resHash + '.' + ext;
35 }
36 fs.writeFileSync(defaultUrl.replace(xmUrl, relUrl), new Buffer(JSON.stringify(defData, null, '\t')));
37 }
38 FileCrc32.prototype.hashItem = function (itemUrl, contents) {
39 var self = this;
40 if (!contents) {
41 contents = fs.readFileSync(itemUrl);
42 }
43 var xmUrl = self.getXMUrl(itemUrl);
44 var relUrl = path.join(xmUrl, 'bin-release');
45 var hash = crc32(contents);
46 var filename = FileUtil_1.FileUtil.filename(itemUrl);
47 var toUrl = filename.replace(xmUrl, relUrl) + '_' + hash + path.extname(itemUrl);
48 FileUtil_1.FileUtil.mkdirSync(path.dirname(toUrl));
49 fs.writeFileSync(toUrl, contents);
50 return hash;
51 };
52 FileCrc32.prototype.getXMUrl = function (url) {
53 return '';
54 };
55 return FileCrc32;
56}());
57function run(baseUrl) {
58 new FileCrc32(baseUrl);
59}
60exports.run = run;