-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
79 lines (58 loc) · 2.05 KB
/
Copy pathindex.js
File metadata and controls
79 lines (58 loc) · 2.05 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
72
73
74
75
76
77
78
79
'use strict';
var path = require('path');
var fs = require('fs');
var Module = require('module');
var resolve = require('libamd/modules/resolve');
var getConfigRecursive = require('libamd/getConfigRecursive');
var _paths = [];
var _shouldTransform = function(filename) {
var isInPathsConfig = _paths.some(function(p) {
return filename.indexOf(p) !== -1;
});
var isWithinProject = (
filename.indexOf(path.resolve('.')) !== -1 &&
filename.indexOf(path.resolve('node_modules')) === -1
);
return isInPathsConfig || isWithinProject;
};
var augmentRequireWithAmd = function(rjsconfig) {
rjsconfig = getConfigRecursive(rjsconfig);
rjsconfig.baseUrl = rjsconfig.baseUrl || process.cwd();
rjsconfig.paths = rjsconfig.paths || {};
_paths = Object.keys(rjsconfig.paths).map(function(key) {
return path.resolve(rjsconfig.baseUrl, rjsconfig.paths[key]);
});
var _resolveFilename = Module._resolveFilename;
Module._resolveFilename = function(request, parent) {
if (request === 'node-amd-require-amdefine') {
// use our copy of amdefine
return require.resolve('amdefine');
}
var dirname = path.dirname(parent.filename);
var filename = resolve(rjsconfig, dirname, request);
if (!filename) {
filename = _resolveFilename.apply(this, arguments);
}
return filename;
};
var _extensionsJs = require.extensions['.js'];
require.extensions['.js'] = function(localModule, filename) {
if (!_shouldTransform(filename)) {
return _extensionsJs.apply(this, arguments);
}
var contents = fs.readFileSync(filename, 'utf8');
contents = 'if (typeof define !== "function") { var define = require("node-amd-require-amdefine")(module); require.nodeRequire = require; } ' + contents;
localModule._compile(contents, filename);
};
};
augmentRequireWithAmd.save = function() {
return {
resolveFilename: Module._resolveFilename,
extension: require.extensions['.js']
};
};
augmentRequireWithAmd.restore = function(state) {
Module._resolveFilename = state.resolveFilename;
require.extensions['.js'] = state.extension;
};
module.exports = augmentRequireWithAmd;