UNPKG

1.58 kBJavaScriptView Raw
1var fs = require("fs");
2var path = require("path");
3
4module.exports = function runLoader(loader, directory, filename, arg, callback) {
5 var async = true;
6 var loaderContext = {
7 async: function () {
8 async = true;
9 return callback;
10 },
11 loaders: ["itself"],
12 loaderIndex: 0,
13 query: "",
14 resource: filename,
15 callback: function () {
16 async = true;
17 return callback.apply(this, arguments);
18 },
19 resolve: function (context, request, callback) {
20 // fake resolve extension
21 if (request.indexOf('.twig') === -1) request = request + '.twig';
22
23 var resolved = path.resolve(context, request);
24
25 // fake webpack resolve on disk
26 var exists = fs.existsSync(resolved);
27
28 if (exists) {
29 callback(null, resolved);
30 } else {
31 callback(new Error("Can't resolve '" + resolved + "' in '" + context + "'"));
32 }
33 },
34 loadModule: function (request, callback) {
35 request = request.replace(/^-?!+/, "");
36 request = request.split("!");
37 var content = fs.readFileSync(request.pop(), "utf-8");
38 if (request[0] && /stringify/.test(request[0])) {
39 content = JSON.stringify(content);
40 }
41 return callback(null, content);
42 },
43 options: {
44 context: ''
45 }
46 };
47 var res = loader.call(loaderContext, arg);
48 if (!async) callback(null, res);
49}