writeFileToAssets.js
2.19 KB
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _loaderUtils = require('loader-utils');
var _loaderUtils2 = _interopRequireDefault(_loaderUtils);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable import/no-commonjs */
var fs = _bluebird2.default.promisifyAll(require('fs-extra'));
/* eslint-enable */
exports.default = function (opts) {
var compilation = opts.compilation;
// ensure forward slashes
var relFileDest = opts.relFileDest.replace(/\\/g, '/');
var relFileSrc = opts.relFileSrc.replace(/\\/g, '/');
var absFileSrc = opts.absFileSrc;
var forceWrite = opts.forceWrite;
var copyUnmodified = opts.copyUnmodified;
var writtenAssetHashes = opts.writtenAssetHashes;
return fs.statAsync(absFileSrc).then(function (stat) {
// We don't write empty directories
if (stat.isDirectory()) {
return;
}
function addToAssets(content) {
console.log('before relFileDest', relFileDest);
relFileDest = _loaderUtils2.default.interpolateName({ resourcePath: relFileSrc }, relFileDest, { content: content });
console.log('relFileSrc', relFileSrc);
console.log('after relFileDest', relFileDest);
if (compilation.assets[relFileDest] && !forceWrite) {
return;
}
compilation.assets[relFileDest] = {
size: function size() {
return stat.size;
},
source: function source() {
return fs.readFileSync(absFileSrc);
}
};
return relFileDest;
}
return fs.readFileAsync(absFileSrc).then(function (content) {
var hash = _loaderUtils2.default.getHashDigest(content);
if (!copyUnmodified && writtenAssetHashes[relFileDest] && writtenAssetHashes[relFileDest] === hash) {
return;
}
writtenAssetHashes[relFileDest] = hash;
return addToAssets(content);
});
});
};