@ainc/fs 0.1.11 → 0.1.15

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.
Files changed (186) hide show
  1. package/README.md +1 -0
  2. package/dist/basename.d.ts +6 -6
  3. package/dist/basename.js +16 -16
  4. package/dist/copy.d.ts +40 -40
  5. package/dist/copy.js +89 -89
  6. package/dist/copy.js.map +1 -1
  7. package/dist/cpdir.d.ts +19 -19
  8. package/dist/cpdir.js +28 -28
  9. package/dist/cpdir.js.map +1 -1
  10. package/dist/cwd.d.ts +6 -6
  11. package/dist/cwd.js +16 -16
  12. package/dist/dirname.d.ts +6 -6
  13. package/dist/dirname.js +30 -30
  14. package/dist/extname.d.ts +6 -6
  15. package/dist/extname.js +16 -16
  16. package/dist/filename.d.ts +6 -6
  17. package/dist/filename.js +24 -24
  18. package/dist/find.d.ts +26 -26
  19. package/dist/find.js +72 -72
  20. package/dist/find.js.map +1 -1
  21. package/dist/findFile.d.ts +20 -20
  22. package/dist/findFile.js +39 -39
  23. package/dist/findFile.js.map +1 -1
  24. package/dist/finddir.d.ts +20 -20
  25. package/dist/finddir.js +39 -39
  26. package/dist/finddir.js.map +1 -1
  27. package/dist/helpers/FileResolver.d.ts +54 -0
  28. package/dist/helpers/FileResolver.d.ts.map +1 -0
  29. package/dist/helpers/FileResolver.js +184 -0
  30. package/dist/helpers/FileResolver.js.map +1 -0
  31. package/dist/helpers/compose.d.ts +14 -0
  32. package/dist/helpers/compose.d.ts.map +1 -0
  33. package/dist/helpers/compose.js +38 -0
  34. package/dist/helpers/compose.js.map +1 -0
  35. package/dist/helpers/each.d.ts +7 -0
  36. package/dist/helpers/each.d.ts.map +1 -0
  37. package/dist/helpers/each.js +21 -0
  38. package/dist/helpers/each.js.map +1 -0
  39. package/dist/helpers/match.d.ts +7 -0
  40. package/dist/helpers/match.d.ts.map +1 -0
  41. package/dist/helpers/match.js +30 -0
  42. package/dist/helpers/match.js.map +1 -0
  43. package/dist/helpers/normalizePath.d.ts +23 -0
  44. package/dist/helpers/normalizePath.d.ts.map +1 -0
  45. package/dist/helpers/normalizePath.js +37 -0
  46. package/dist/helpers/normalizePath.js.map +1 -0
  47. package/dist/helpers/safeCall.d.ts +7 -0
  48. package/dist/helpers/safeCall.d.ts.map +1 -0
  49. package/dist/helpers/safeCall.js +24 -0
  50. package/dist/helpers/safeCall.js.map +1 -0
  51. package/dist/helpers/split.d.ts +7 -0
  52. package/dist/helpers/split.d.ts.map +1 -0
  53. package/dist/helpers/split.js +25 -0
  54. package/dist/helpers/split.js.map +1 -0
  55. package/dist/helpers/stripBOM.d.ts +7 -0
  56. package/dist/helpers/stripBOM.d.ts.map +1 -0
  57. package/dist/helpers/stripBOM.js +19 -0
  58. package/dist/helpers/stripBOM.js.map +1 -0
  59. package/dist/helpers/stripComments.d.ts +7 -0
  60. package/dist/helpers/stripComments.d.ts.map +1 -0
  61. package/dist/{normalizeJSON.js → helpers/stripComments.js} +145 -145
  62. package/dist/helpers/stripComments.js.map +1 -0
  63. package/dist/homedir.d.ts +6 -6
  64. package/dist/homedir.js +31 -31
  65. package/dist/includePaths.d.ts +6 -6
  66. package/dist/includePaths.js +53 -53
  67. package/dist/includePaths.js.map +1 -1
  68. package/dist/index.d.ts +43 -44
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +90 -92
  71. package/dist/index.js.map +1 -1
  72. package/dist/indir.d.ts +13 -13
  73. package/dist/indir.js +26 -26
  74. package/dist/isAbsolutePath.d.ts +6 -6
  75. package/dist/isAbsolutePath.js +24 -24
  76. package/dist/isDirectory.d.ts +12 -12
  77. package/dist/isDirectory.js +26 -26
  78. package/dist/isDirectory.js.map +1 -1
  79. package/dist/isRelativePath.d.ts +6 -6
  80. package/dist/isRelativePath.js +44 -44
  81. package/dist/json.d.ts +21 -21
  82. package/dist/json.d.ts.map +1 -1
  83. package/dist/json.js +34 -33
  84. package/dist/json.js.map +1 -1
  85. package/dist/jsonc.d.ts +21 -21
  86. package/dist/jsonc.js +40 -40
  87. package/dist/jsonc.js.map +1 -1
  88. package/dist/lstat.d.ts +22 -22
  89. package/dist/lstat.js +30 -30
  90. package/dist/mapdir.d.ts +22 -22
  91. package/dist/mapdir.js +42 -42
  92. package/dist/mapdir.js.map +1 -1
  93. package/dist/mkdir.d.ts +6 -6
  94. package/dist/mkdir.js +37 -37
  95. package/dist/mkdir.js.map +1 -1
  96. package/dist/parseJSON.d.ts +16 -0
  97. package/dist/parseJSON.d.ts.map +1 -0
  98. package/dist/parseJSON.js +29 -0
  99. package/dist/parseJSON.js.map +1 -0
  100. package/dist/readFile.d.ts +29 -29
  101. package/dist/readFile.js +26 -26
  102. package/dist/readFile.js.map +1 -1
  103. package/dist/readStream.d.ts +36 -36
  104. package/dist/readStream.d.ts.map +1 -1
  105. package/dist/readStream.js +19 -19
  106. package/dist/readStream.js.map +1 -1
  107. package/dist/readdir.d.ts +16 -16
  108. package/dist/readdir.js +34 -34
  109. package/dist/readdir.js.map +1 -1
  110. package/dist/readline.d.ts +16 -16
  111. package/dist/readline.d.ts.map +1 -1
  112. package/dist/readline.js +24 -24
  113. package/dist/readline.js.map +1 -1
  114. package/dist/realpath.d.ts +12 -12
  115. package/dist/realpath.js +32 -32
  116. package/dist/realpath.js.map +1 -1
  117. package/dist/relative.d.ts +6 -6
  118. package/dist/relative.js +38 -38
  119. package/dist/resolve.d.ts +26 -26
  120. package/dist/resolve.js +53 -53
  121. package/dist/resolve.js.map +1 -1
  122. package/dist/resolvePath.d.ts +27 -0
  123. package/dist/resolvePath.d.ts.map +1 -0
  124. package/dist/resolvePath.js +178 -0
  125. package/dist/resolvePath.js.map +1 -0
  126. package/dist/rmdir.d.ts +6 -6
  127. package/dist/rmdir.js +40 -40
  128. package/dist/rmdir.js.map +1 -1
  129. package/dist/stat.d.ts +21 -21
  130. package/dist/stat.js +30 -30
  131. package/dist/supdir.d.ts +21 -15
  132. package/dist/supdir.d.ts.map +1 -1
  133. package/dist/supdir.js +62 -35
  134. package/dist/supdir.js.map +1 -1
  135. package/dist/symlink.d.ts +22 -22
  136. package/dist/symlink.js +39 -39
  137. package/dist/symlink.js.map +1 -1
  138. package/dist/unlink.d.ts +6 -6
  139. package/dist/unlink.js +28 -28
  140. package/dist/unlink.js.map +1 -1
  141. package/dist/usedir.d.ts +6 -6
  142. package/dist/usedir.js +24 -24
  143. package/dist/writeFile.d.ts +33 -33
  144. package/dist/writeFile.js +49 -49
  145. package/dist/writeFile.js.map +1 -1
  146. package/dist/writeStream.d.ts +35 -35
  147. package/dist/writeStream.d.ts.map +1 -1
  148. package/dist/writeStream.js +19 -19
  149. package/dist/writeStream.js.map +1 -1
  150. package/package.json +5 -5
  151. package/src/helpers/FileResolver.ts +282 -0
  152. package/src/helpers/compose.ts +49 -0
  153. package/src/helpers/each.ts +19 -0
  154. package/src/helpers/match.ts +31 -0
  155. package/src/helpers/normalizePath.ts +51 -0
  156. package/src/helpers/safeCall.ts +21 -0
  157. package/src/helpers/split.ts +25 -0
  158. package/src/helpers/stripBOM.ts +17 -0
  159. package/src/{normalizeJSON.ts → helpers/stripComments.ts} +1 -1
  160. package/src/index.ts +2 -3
  161. package/src/json.ts +2 -1
  162. package/src/jsonc.ts +2 -2
  163. package/src/parseJSON.ts +40 -0
  164. package/src/readStream.ts +2 -2
  165. package/src/readline.ts +2 -2
  166. package/src/resolvePath.ts +234 -0
  167. package/src/supdir.ts +31 -0
  168. package/src/writeStream.ts +2 -2
  169. package/dist/normalizeJSON.d.ts +0 -7
  170. package/dist/normalizeJSON.d.ts.map +0 -1
  171. package/dist/normalizeJSON.js.map +0 -1
  172. package/dist/resolveFile.d.ts +0 -22
  173. package/dist/resolveFile.d.ts.map +0 -1
  174. package/dist/resolveFile.js +0 -80
  175. package/dist/resolveFile.js.map +0 -1
  176. package/dist/resolveModule.d.ts +0 -41
  177. package/dist/resolveModule.d.ts.map +0 -1
  178. package/dist/resolveModule.js +0 -119
  179. package/dist/resolveModule.js.map +0 -1
  180. package/dist/resolvePaths.d.ts +0 -22
  181. package/dist/resolvePaths.d.ts.map +0 -1
  182. package/dist/resolvePaths.js +0 -233
  183. package/dist/resolvePaths.js.map +0 -1
  184. package/src/resolveFile.ts +0 -103
  185. package/src/resolveModule.ts +0 -157
  186. package/src/resolvePaths.ts +0 -320
@@ -1,233 +0,0 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2021-07-10 14:04:38
5
- *****************************************
6
- */
7
- 'use strict';
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.resolvePaths = void 0;
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- const cwd_1 = require("./cwd");
16
- const isRelativePath_1 = require("./isRelativePath");
17
- const isAbsolutePath_1 = require("./isAbsolutePath");
18
- const resolveFile_1 = require("./resolveFile");
19
- const resolveModule_1 = require("./resolveModule");
20
- /**
21
- *****************************************
22
- * 组合规则
23
- *****************************************
24
- */
25
- function compose(rules) {
26
- // 无处理函数
27
- if (rules.length === 0) {
28
- return () => undefined;
29
- }
30
- // 单一处理函数
31
- if (rules.length === 1) {
32
- return rules[0];
33
- }
34
- // 复合处理函数
35
- return (id, context) => {
36
- for (let idx = 0, len = rules.length; idx < len; idx++) {
37
- const result = rules[idx](id, context);
38
- // 解析成功
39
- if (result) {
40
- return result;
41
- }
42
- }
43
- };
44
- }
45
- /**
46
- *****************************************
47
- * 解析文件
48
- *****************************************
49
- */
50
- function resolvePath(name, options) {
51
- // 处理绝对路径
52
- if (isAbsolutePath_1.isAbsolutePath(name)) {
53
- return resolveFile_1.resolveFile(name, options);
54
- }
55
- // 处理相对路径
56
- if (isRelativePath_1.isRelativePath(name)) {
57
- return resolveFile_1.resolveFile(cwd_1.cwd(name), options);
58
- }
59
- }
60
- /**
61
- *****************************************
62
- * 解析别名
63
- *****************************************
64
- */
65
- function resolveAliasPaths(options) {
66
- const { alias } = options;
67
- // 不存在别名映射
68
- if (!alias) {
69
- return (id, next) => resolvePath(id, options) || next(id);
70
- }
71
- // 定义规则列表
72
- const rules = [];
73
- // 解析别名
74
- Object.keys(alias).forEach(key => {
75
- const paths = resolveModule_1.normalizePaths(alias[key]);
76
- // 绝对匹配
77
- if (key.endsWith('$')) {
78
- // 去除匹配符
79
- key = key.slice(0, -1);
80
- // 添加匹配规则
81
- return rules.push(id => id === key ? paths : undefined);
82
- }
83
- // 生成配置前缀
84
- const prefix = key + '/';
85
- const prefixLength = key.length;
86
- const join = (suffix) => paths.map(id => id + suffix);
87
- // 添加匹配规则
88
- rules.push(id => id === key ? paths : undefined, id => id.startsWith(prefix) ? join(id.slice(prefixLength)) : undefined);
89
- });
90
- // 解析规则
91
- function resolveRules(id, next, rules) {
92
- // 处理绝对路径
93
- if (isAbsolutePath_1.isAbsolutePath(id)) {
94
- return resolveFile_1.resolveFile(id, options);
95
- }
96
- // 处理相对路径
97
- if (isRelativePath_1.isRelativePath(id)) {
98
- return resolveFile_1.resolveFile(cwd_1.cwd(id), options);
99
- }
100
- // 解析模块
101
- const result = resolveFile_1.match(rules, handler => {
102
- const paths = handler(id);
103
- // 存在解析路径
104
- if (paths) {
105
- return resolveFile_1.match(paths, id => resolveRules(id, next, rules.filter(fn => fn !== handler)));
106
- }
107
- });
108
- // 执行解析回调
109
- return result || next(id);
110
- }
111
- // 返回解析函数
112
- return (id, next) => resolveRules(id, next, [...rules]);
113
- }
114
- /**
115
- *****************************************
116
- * 解析基准路径模块
117
- *****************************************
118
- */
119
- function resolveBaseUrlPaths(baseDir, paths, options) {
120
- const rules = [];
121
- // 解析映射路径
122
- function resolvePaths(paths, isExactMatch) {
123
- // 校验参数
124
- if (!Array.isArray(paths) || paths.find(path => !path || typeof path !== 'string')) {
125
- throw new Error('expect paths value to bo string[]!');
126
- }
127
- // 生成完全配置函数
128
- if (isExactMatch) {
129
- return compose(paths.map(dir => () => resolveFile_1.resolveFile(cwd_1.cwd(baseDir, dir), options)));
130
- }
131
- // 生成部分配置函数
132
- return compose(paths.map(dir => {
133
- const idx = dir.indexOf('*');
134
- // 不存在通配符
135
- if (idx === -1) {
136
- return () => resolveFile_1.resolveFile(cwd_1.cwd(baseDir, dir), options);
137
- }
138
- // 获取前、后缀
139
- const prefix = dir.slice(0, idx);
140
- const suffix = dir.slice(idx + 1);
141
- // 返回解析函数
142
- return (id) => resolveFile_1.resolveFile(cwd_1.cwd(baseDir, prefix + id + suffix), options);
143
- }));
144
- }
145
- // 遍历映射
146
- Object.keys(paths).forEach(key => {
147
- // 无效路径
148
- if (!key) {
149
- return;
150
- }
151
- // 获取匹配符
152
- const idx = key.indexOf('*');
153
- // 完全匹配
154
- if (idx === -1) {
155
- const resolve = resolvePaths(paths[key], true);
156
- // 添加处理函数
157
- return rules.push((id) => id === key ? resolve('') : undefined);
158
- }
159
- // 获取解析项
160
- const prefix = key.slice(0, idx);
161
- const suffix = key.slice(idx + 1);
162
- const prefixLength = prefix.length;
163
- const suffixLength = -suffix.length;
164
- const resolve = resolvePaths(paths[key], false);
165
- // 生成函数
166
- if (prefix) {
167
- rules.push(suffix ?
168
- id => {
169
- if (id.startsWith(prefix) && id.endsWith(suffix)) {
170
- return resolve(id.slice(prefixLength, suffixLength));
171
- }
172
- } :
173
- id => {
174
- if (id.startsWith(prefix)) {
175
- return resolve(id.slice(prefixLength));
176
- }
177
- });
178
- }
179
- else {
180
- rules.push(suffix ?
181
- id => id.endsWith(suffix) ? resolve(id.slice(0, suffixLength)) : undefined :
182
- id => resolve(id));
183
- }
184
- });
185
- // 返回结果
186
- return compose(rules);
187
- }
188
- /**
189
- *****************************************
190
- * 解析基准路径模块
191
- *****************************************
192
- */
193
- function resolveBaseUrlModule(baseDir, options) {
194
- return (id) => {
195
- return resolveFile_1.resolveFile(cwd_1.cwd(baseDir, id), options);
196
- };
197
- }
198
- /**
199
- *****************************************
200
- * 解析模块路径
201
- *****************************************
202
- */
203
- function resolvePaths(options) {
204
- const { baseUrl, paths } = options;
205
- const rules = [];
206
- const baseDir = cwd_1.cwd(baseUrl || './');
207
- // 解析内置模块
208
- rules.push(resolveModule_1.resolveBuiltinModule);
209
- // 解析模块映射
210
- if (paths) {
211
- rules.push(resolveBaseUrlPaths(baseDir, paths, options));
212
- }
213
- // 解析基准路径模块
214
- if (baseUrl) {
215
- rules.push(resolveBaseUrlModule(baseDir, options));
216
- }
217
- // 解析第三方模块
218
- rules.push(resolveModule_1.resolveModulePaths(options));
219
- // 生成解析函数
220
- const resolveAlias = resolveAliasPaths(options);
221
- const resolveModule = compose(rules);
222
- // 返回解析函数
223
- return (id, context) => {
224
- // 不解析相对路径
225
- if (isRelativePath_1.isRelativePath(id)) {
226
- return;
227
- }
228
- // 解析结果
229
- return resolveAlias(id, name => resolveModule(name, context));
230
- };
231
- }
232
- exports.resolvePaths = resolvePaths;
233
- //# sourceMappingURL=resolvePaths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolvePaths.js","sourceRoot":"","sources":["../src/resolvePaths.ts"],"names":[],"mappings":"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"}
@@ -1,103 +0,0 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2021-06-19 00:16:40
5
- *****************************************
6
- */
7
- 'use strict';
8
-
9
-
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- import { resolve, join } from 'path';
16
- import { stat } from './stat';
17
- import { json } from './json';
18
-
19
-
20
- /**
21
- *****************************************
22
- * 配置项
23
- *****************************************
24
- */
25
- export interface Options {
26
- extensions?: string[];
27
- mainFields?: string[];
28
- }
29
-
30
-
31
- /**
32
- *****************************************
33
- * 匹配列表
34
- *****************************************
35
- */
36
- export function match<T, P>(list: T[], handler: (data: T, index: number) => void | P): void | P {
37
-
38
- // 处理长度为1
39
- if (list.length === 1) {
40
- return handler(list[0], 0);
41
- }
42
-
43
- // 处理列表
44
- for (let idx = 0, len = list.length; idx < len; idx ++) {
45
- const result = handler(list[idx], idx);
46
-
47
- // 返回结果
48
- if (typeof result !== 'undefined') {
49
- return result;
50
- }
51
- }
52
- }
53
-
54
-
55
- /**
56
- *****************************************
57
- * 解析文件
58
- *****************************************
59
- */
60
- export function resolveFile(file: string, options: Options = {}): void | string {
61
- const exts: string[] = [''].concat(options.extensions || ['.js', '.ts', '.mjs', '.jsx', '.tsx', '.json']);
62
- const dirs: string[] = [];
63
-
64
- // 解析文件
65
- for (let idx = 0, len = exts.length; idx < len; idx ++) {
66
- const stats = stat(file + exts[idx]);
67
-
68
- // 存在目录
69
- if (stats) {
70
- if (stats.isFile()) {
71
- return stats.path;
72
- }
73
-
74
- // 添加解析目录
75
- stats.isDirectory() && dirs.push(stats.path);
76
- }
77
- }
78
-
79
- // 解析目录
80
- return match(dirs, (dir) => {
81
- const pkg = json(join(dir, 'package.json'));
82
-
83
- // 配置包对象
84
- if (pkg) {
85
- const result = match(options.mainFields || ['main'], field => {
86
- const main = pkg[field] as string;
87
-
88
- // 存在对象
89
- if (main) {
90
- return resolveFile(resolve(dir, main), options);
91
- }
92
- });
93
-
94
- // 匹配成功
95
- if (typeof result !== 'undefined') {
96
- return result;
97
- }
98
- }
99
-
100
- // 配置默认文件
101
- return resolveFile(join(dir, 'index'), options);
102
- });
103
- }
@@ -1,157 +0,0 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2021-07-10 17:01:38
5
- *****************************************
6
- */
7
- 'use strict';
8
-
9
-
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- import * as Module from 'module';
16
- import { cwd } from './cwd';
17
- import { supdir } from './supdir';
18
- import { relative } from './relative';
19
- import { isDirectory } from './isDirectory';
20
- import { isRelativePath } from './isRelativePath';
21
- import { isAbsolutePath } from './isAbsolutePath';
22
- import { match, resolveFile, Options as ResolveFileOptions } from './resolveFile';
23
-
24
-
25
- /**
26
- *****************************************
27
- * 解析函数
28
- *****************************************
29
- */
30
- export type Handler = (id: string, context?: string) => void | string;
31
-
32
-
33
- /**
34
- *****************************************
35
- * 格式化路径
36
- *****************************************
37
- */
38
- export function normalizePaths(paths: string | string[]): string[] {
39
-
40
- // 重载参数
41
- if (typeof paths === 'string') {
42
- paths = [paths];
43
- }
44
-
45
- // 校验参数
46
- if (!Array.isArray(paths)) {
47
- throw new Error('expect paths to be path string or string[]!');
48
- }
49
-
50
- // 生成处理函数
51
- return paths.map(name => {
52
-
53
- // 校验路径
54
- if (!name || typeof name !== 'string') {
55
- throw new Error('expect paths to be path string or string[]!');
56
- }
57
-
58
- // 解析路径
59
- return isRelativePath(name) ? cwd(name) : name;
60
- });
61
- }
62
-
63
-
64
- /**
65
- *****************************************
66
- * 解析内置模块
67
- *****************************************
68
- */
69
- export function resolveBuiltinModule(name: string): void | string {
70
- return Module.builtinModules.includes(name) ? name : undefined;
71
- }
72
-
73
-
74
- /**
75
- *****************************************
76
- * 第三方模块路径
77
- *****************************************
78
- */
79
- const nodeModulesRegExp = /^(\.?\.\/)*node_modules\//i;
80
-
81
-
82
- /**
83
- *****************************************
84
- * 解析模块目录
85
- *****************************************
86
- */
87
- export function resolveModulePaths(options: Options): Handler {
88
- const baseDir = process.cwd();
89
- const cached = new Map<string, Handler>();
90
- const modules = normalizePaths(options.modules || ['node_modules']);
91
- const useRelativePath = !!options.useRelativePath;
92
-
93
- // 解析模块上下文
94
- function resolveModuleContext(context: string): Handler {
95
- const paths: string[] = [];
96
-
97
- // 遍历路径
98
- modules.forEach(path => {
99
- if (isAbsolutePath(path)) {
100
- paths.push(path);
101
- } else {
102
- supdir(context, (dir, next) => (paths.push(cwd(dir, path)), next()));
103
- }
104
- });
105
-
106
- // 生成解析函数
107
- const resolve: Handler = id => match(paths, dir => {
108
- return isDirectory(dir) ? resolveFile(cwd(dir, id), options) : undefined;
109
- });
110
-
111
- // 缓存函数
112
- cached.set(context, resolve);
113
-
114
- // 返回函数函数
115
- return resolve;
116
- }
117
-
118
- // 返回结果
119
- return (id, context) => {
120
- const dir = context || baseDir;
121
- const resolve = cached.get(dir) || resolveModuleContext(dir);
122
- const modulePath = resolve(id);
123
-
124
- // 解析失败
125
- if (!modulePath) {
126
- return;
127
- }
128
-
129
- // 解析返回路径
130
- return (
131
- useRelativePath ?
132
- relative(dir, modulePath).replace(nodeModulesRegExp, '') :
133
- modulePath
134
- );
135
- };
136
- }
137
-
138
-
139
- /**
140
- *****************************************
141
- * 解析配置
142
- *****************************************
143
- */
144
- export interface Options extends ResolveFileOptions {
145
- modules?: string[];
146
- useRelativePath?: boolean;
147
- }
148
-
149
-
150
- /**
151
- *****************************************
152
- * 解析模块
153
- *****************************************
154
- */
155
- export function resolveModule(id: string, context?: string, options?: Options): void | string {
156
- return resolveModulePaths(options || {})(id, context);
157
- }