执行过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
'use strict'
 
const chalk = require('chalk')
const dedent = require('dedent')
const has = require('lodash/has')
 
const warn = msg => {
  console.warn(chalk.yellowBright.bold(msg))
}
 
/**
 * Checks if the given command or binary name is present in the package.json scripts. This would be
 * called if and when resolving a binary fails in `findBin`.
 *
 * @param {Object} pkg package.json
 * @param {string} cmd
 * @param {string} binName
 * @param {Array<string>} args
 * @throws {Error} If a script is found in the pkg for the given `cmd` or `binName`.
 */
module.exports = function checkPkgScripts(pkg, cmd, binName, args) {
  if (pkg && pkg.scripts) {
    const { scripts } = pkg
    let scriptName
    let script
    if (has(scripts, cmd)) {
      scriptName = cmd
      script = scripts[cmd]
    } else if (has(scripts, binName)) {
      scriptName = binName
      script = scripts[binName]
    } else {
      return
    }
 
    const argsStr = args && args.length ? args.join(' ') : ''
    warn(dedent`
      \`lint-staged\` no longer supports running scripts defined in package.json.
 
      The same behavior can be achieved by changing the command to any of the following:
        - \`npm run ${scriptName} -- ${argsStr}\`
        - \`${script} ${argsStr}\`
    `)
    throw new Error(`Could not resolve binary for \`${cmd}\``)
  }
}