-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhowler-loader.js
36 lines (28 loc) · 1.11 KB
/
howler-loader.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
module.exports = function (source, map, meta) {
const callback = this.async();
let config = JSON.parse(source);
let dir = this.context;
// console.log("this is howler-loader", map, meta);
let files = [];
config.src.forEach((ref, index) => {
// console.log(" calling resolve(%s, %s) for %o", dir, ref, index);
let filename = dir + '/' + ref;
let varName = "__HOWLER_SRC_" + files.length;
let importName = "__HOWLER_IMPORT_" + files.length;
files.push({file: filename, var: varName, import: importName});
config.src[index] = varName;
});
let imports = "// imports\n";
let vars = "// vars\n";
let exports = "// export\n";
files.forEach(item => {
// this.addDependency(item.file);
imports += `import ${item.import} from "file-loader!${item.file}";\n`;
vars += `var ${item.var} = ${item.import};\n`;
});
let s = JSON.stringify(config);
exports += `export default ${s.replace(/"(__HOWLER.*?)"/, "$1")};\n`
let code = `${imports}${vars}${exports}`;
// console.log(code);
callback(null, code);
}