1 | const chalk = require('chalk');
|
2 | const isObject = require('isobject');
|
3 | const merge = require('merge-options');
|
4 |
|
5 | module.exports = {
|
6 | apply(argv, options) {
|
7 | const result = {};
|
8 | const resolve = {};
|
9 |
|
10 | if (argv.resolveAlias && isObject(argv.resolveAlias)) {
|
11 | resolve.alias = argv.resolveAlias;
|
12 | }
|
13 |
|
14 | if (argv.resolveExtensions) {
|
15 | const value = argv.resolveExtensions;
|
16 |
|
17 | if (value) {
|
18 | resolve.extensions = Array.isArray(value) ? value : value.split(/,\s*/);
|
19 | }
|
20 | }
|
21 |
|
22 | if (argv.resolveLoaderAlias) {
|
23 | result.resolveLoader = argv.resolveAlias;
|
24 | }
|
25 |
|
26 | if (Object.keys(resolve).length) {
|
27 | result.resolve = resolve;
|
28 | }
|
29 |
|
30 | return merge(options, result);
|
31 | },
|
32 |
|
33 | flags: {
|
34 | 'resolve-alias': {
|
35 | desc: chalk`Setup a module alias for resolving
|
36 | {dim e.g. --resolve-alias.jquery jquery.plugin}`,
|
37 | type: 'object',
|
38 | },
|
39 | 'resolve-extensions': {
|
40 | desc: chalk`Setup extensions that should be used to resolve modules
|
41 | {dim e.g. .es6,.js}`,
|
42 | type: ['string', 'array'],
|
43 | },
|
44 | 'resolve-loader-alias': {
|
45 | desc: 'Setup a loader alias for resolving',
|
46 | type: 'object',
|
47 | },
|
48 | },
|
49 |
|
50 | name: 'Resolver',
|
51 | };
|