UNPKG

1.52 kBJavaScriptView Raw
1let SizeLimitError = require('./size-limit-error')
2
3module.exports = function parseArgs(plugins, argv) {
4 let args = { files: [] }
5 for (let i = 2; i < argv.length; i++) {
6 let arg = argv[i]
7
8 if (arg === '--limit') {
9 args.limit = argv[++i]
10 } else if (arg === '--debug') {
11 args.debug = true
12 } else if (arg === '--save-bundle') {
13 if (!plugins.has('webpack')) {
14 throw new SizeLimitError('argWithoutWebpack', 'save-bundle')
15 }
16 let nextArg = argv[++i]
17 if (!nextArg || nextArg.startsWith('--')) {
18 throw new SizeLimitError('argWithoutParameter', 'save-bundle', 'DIR')
19 }
20 args.saveBundle = nextArg
21 } else if (arg === '--clean-dir') {
22 if (!argv.includes('--save-bundle')) {
23 throw new SizeLimitError(
24 'argWithoutAnotherArg',
25 'clean-dir',
26 'save-bundle'
27 )
28 }
29 args.cleanDir = true
30 } else if (arg === '--hide-passed') {
31 args.hidePassed = true
32 } else if (arg === '--why') {
33 if (!plugins.has('webpack')) {
34 throw new SizeLimitError('argWithoutWebpack', 'why')
35 }
36 args.why = true
37 } else if (arg === '--watch') {
38 args.watch = true
39 } else if (arg === '--highlight-less') {
40 args.highlightLess = true
41 } else if (arg[0] !== '-') {
42 args.files.push(arg)
43 } else if (arg === '--silent') {
44 args.isSilentMode = arg
45 } else if (arg !== '--json') {
46 throw new SizeLimitError('unknownArg', arg)
47 }
48 }
49 return args
50}