@makano/rew 1.2.32 → 1.2.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/rew/functions/require.js +34 -12
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ const path = require('path');
|
|
|
3
3
|
|
|
4
4
|
module.exports.customRequire = function customRequire(modulePath, filePath) {
|
|
5
5
|
const resolvedPath = resolveModulePath(modulePath, filePath);
|
|
6
|
+
if(!resolvedPath) throw new Error('Module '+modulePath+' not found');
|
|
6
7
|
return require(resolvedPath);
|
|
7
8
|
};
|
|
8
9
|
|
|
@@ -20,19 +21,40 @@ function resolveModulePath(modulePath, filePath) {
|
|
|
20
21
|
if (fs.existsSync(fullPath + '.json')) {
|
|
21
22
|
return fullPath + '.json';
|
|
22
23
|
}
|
|
24
|
+
|
|
23
25
|
if (fs.existsSync(fullPath) && fs.statSync(fullPath).isDirectory()) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
const indexPath = path.join(fullPath, 'index.js');
|
|
33
|
-
if (fs.existsSync(indexPath)) {
|
|
34
|
-
return indexPath;
|
|
35
|
-
}
|
|
26
|
+
return searchInPath(fullPath);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const rootPath = modulePath.split('/').shift();
|
|
30
|
+
const halfFullPath = path.join(basePath, rootPath);
|
|
31
|
+
if (fs.existsSync(halfFullPath) && fs.statSync(halfFullPath).isDirectory()) {
|
|
32
|
+
return searchInPath(halfFullPath, ['.'].concat(fullPath.split('/').slice(1)).join('/'));
|
|
36
33
|
}
|
|
37
34
|
}
|
|
38
35
|
}
|
|
36
|
+
|
|
37
|
+
function searchInPath(fullPath, exportses){
|
|
38
|
+
const packageJsonPath = path.join(fullPath, 'package.json');
|
|
39
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
40
|
+
const packageJson = require(packageJsonPath);
|
|
41
|
+
let main = packageJson.main || 'index.js';
|
|
42
|
+
if(exportses){
|
|
43
|
+
if(packageJson.exports){
|
|
44
|
+
if(exportses in packageJson.exports) main = packageJson.exports[exportses];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if(typeof main == "object"){
|
|
48
|
+
if(Array.isArray(main)) main = main[0].require;
|
|
49
|
+
else main = main.require;
|
|
50
|
+
}
|
|
51
|
+
const mainPath = path.join(fullPath, main);
|
|
52
|
+
if (fs.existsSync(mainPath)) {
|
|
53
|
+
return mainPath;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const indexPath = path.join(fullPath, 'index.js');
|
|
57
|
+
if (fs.existsSync(indexPath)) {
|
|
58
|
+
return indexPath;
|
|
59
|
+
}
|
|
60
|
+
}
|