|
1 | | -function normalizeFallbackString(fallbackString, originalOptions) { |
2 | | - const index = fallbackString.indexOf('?'); |
3 | | - if (index >= 0) { |
4 | | - return { |
5 | | - loader: fallbackString.substr(0, index), |
6 | | - query: fallbackString.substr(index), |
7 | | - }; |
8 | | - } |
| 1 | +import loaderUtils from 'loader-utils'; |
9 | 2 |
|
10 | | - // To remain consistent with version 1.0.1, pass any other options which were provided to url-loader to the fallback loader. |
11 | | - const { fallback, limit, mimetype, ...otherOptions } = originalOptions; |
| 3 | +export default function normalizeFallback(fallback, originalOptions) { |
| 4 | + let loader = 'file-loader'; |
| 5 | + let options = {}; |
12 | 6 |
|
13 | | - return { |
14 | | - loader: fallbackString, |
15 | | - query: otherOptions, |
16 | | - }; |
17 | | -} |
| 7 | + if (typeof fallback === 'string') { |
| 8 | + loader = fallback; |
18 | 9 |
|
19 | | -function normalizeFallbackObject(fallbackObject) { |
20 | | - return { |
21 | | - loader: fallbackObject.loader, |
22 | | - query: fallbackObject.options, |
23 | | - }; |
24 | | -} |
| 10 | + const index = fallback.indexOf('?'); |
25 | 11 |
|
26 | | -/** |
27 | | - * Converts the fallback option, which can be a string or an object, to an object with a loader and a query. The result |
28 | | - * has this form: |
29 | | - * { |
30 | | - * loader: 'file-loader', |
31 | | - * query: '?name=[name].[ext]' |
32 | | - * } |
33 | | - * Note that the returned query can be either a string or an object. |
34 | | - */ |
35 | | -export default function normalizeFallback(fallback, originalOptions) { |
36 | | - // If no fallback was provided, use file-loader. |
37 | | - if (!fallback) { |
38 | | - return normalizeFallbackString('file-loader', originalOptions); |
| 12 | + if (index >= 0) { |
| 13 | + loader = fallback.substr(0, index); |
| 14 | + options = loaderUtils.parseQuery(fallback.substr(index)); |
| 15 | + } |
39 | 16 | } |
40 | 17 |
|
41 | | - if (typeof fallback === 'string') { |
42 | | - return normalizeFallbackString(fallback, originalOptions); |
| 18 | + if (fallback !== null && typeof fallback === 'object') { |
| 19 | + ({ loader, options } = fallback); |
43 | 20 | } |
44 | 21 |
|
45 | | - return normalizeFallbackObject(fallback); |
| 22 | + options = Object.assign({}, originalOptions, options); |
| 23 | + |
| 24 | + delete options.fallback; |
| 25 | + |
| 26 | + return { loader, options }; |
46 | 27 | } |
0 commit comments