执行过npm install命令的vue-element-admin源码
康凯
2022-05-20 aa4c235a8ca67ea8b731f90c951a465e92c0a865
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
'use strict'
 
const dedent = require('dedent')
const cosmiconfig = require('cosmiconfig')
const stringifyObject = require('stringify-object')
const { getConfig, validateConfig } = require('./getConfig')
const printErrors = require('./printErrors')
const runAll = require('./runAll')
 
const debug = require('debug')('lint-staged')
 
// Force colors for packages that depend on https://www.npmjs.com/package/supports-color
// but do this only in TTY mode
if (process.stdout.isTTY) {
  // istanbul ignore next
  process.env.FORCE_COLOR = '1'
}
 
const errConfigNotFound = new Error('Config could not be found')
 
function resolveConfig(configPath) {
  try {
    return require.resolve(configPath)
  } catch (ignore) {
    return configPath
  }
}
 
function loadConfig(configPath) {
  const explorer = cosmiconfig('lint-staged', {
    searchPlaces: [
      'package.json',
      '.lintstagedrc',
      '.lintstagedrc.json',
      '.lintstagedrc.yaml',
      '.lintstagedrc.yml',
      '.lintstagedrc.js',
      'lint-staged.config.js'
    ]
  })
 
  return configPath ? explorer.load(resolveConfig(configPath)) : explorer.search()
}
 
/**
 * Root lint-staged function that is called from .bin
 */
module.exports = function lintStaged(logger = console, configPath, debugMode) {
  debug('Loading config using `cosmiconfig`')
 
  return loadConfig(configPath)
    .then(result => {
      if (result == null) throw errConfigNotFound
 
      debug('Successfully loaded config from `%s`:\n%O', result.filepath, result.config)
      // result.config is the parsed configuration object
      // result.filepath is the path to the config file that was found
      const config = validateConfig(getConfig(result.config, debugMode))
      if (debugMode) {
        // Log using logger to be able to test through `consolemock`.
        logger.log('Running lint-staged with the following config:')
        logger.log(stringifyObject(config, { indent: '  ' }))
      } else {
        // We might not be in debug mode but `DEBUG=lint-staged*` could have
        // been set.
        debug('Normalized config:\n%O', config)
      }
 
      return runAll(config)
        .then(() => {
          debug('linters were executed successfully!')
          // No errors, exiting with 0
        })
        .catch(error => {
          // Errors detected, printing and exiting with non-zero
          process.exitCode = 1
          printErrors(error)
        })
    })
    .catch(err => {
      process.exitCode = 1
      if (err === errConfigNotFound) {
        logger.error(`${err.message}.`)
      } else {
        // It was probably a parsing error
        logger.error(dedent`
          Could not parse lint-staged config.
 
          ${err}
        `)
      }
      logger.error() // empty line
      // Print helpful message for all errors
      logger.error(dedent`
        Please make sure you have created it correctly.
        See https://github.com/okonet/lint-staged#configuration.
      `)
    })
}