Spaces:
Sleeping
Sleeping
| module.exports = (api, options) => { | |
| api.registerCommand( | |
| 'inspect', | |
| { | |
| description: 'inspect internal webpack config', | |
| usage: 'vue-cli-service inspect [options] [...paths]', | |
| options: { | |
| '--mode': 'specify env mode (default: development)', | |
| '--rule <ruleName>': 'inspect a specific module rule', | |
| '--plugin <pluginName>': 'inspect a specific plugin', | |
| '--rules': 'list all module rule names', | |
| '--plugins': 'list all plugin names', | |
| '--verbose': 'show full function definitions in output', | |
| '--skip-plugins': 'comma-separated list of plugin names to skip for this run' | |
| } | |
| }, | |
| args => { | |
| const { chalk, get } = require('@vue/cli-shared-utils') | |
| const { toString } = require('webpack-chain') | |
| const { highlight } = require('cli-highlight') | |
| const config = api.resolveWebpackConfig() | |
| const { _: paths, verbose } = args | |
| let res | |
| let hasUnnamedRule | |
| if (args.rule) { | |
| res = config.module.rules.find(r => r.__ruleNames[0] === args.rule) | |
| } else if (args.plugin) { | |
| res = config.plugins.find(p => p.__pluginName === args.plugin) | |
| } else if (args.rules) { | |
| res = config.module.rules.map(r => { | |
| const name = r.__ruleNames ? r.__ruleNames[0] : 'Nameless Rule (*)' | |
| hasUnnamedRule = hasUnnamedRule || !r.__ruleNames | |
| return name | |
| }) | |
| } else if (args.plugins) { | |
| res = config.plugins.map(p => p.__pluginName || p.constructor.name) | |
| } else if (paths.length > 1) { | |
| res = {} | |
| paths.forEach(path => { | |
| res[path] = get(config, path) | |
| }) | |
| } else if (paths.length === 1) { | |
| res = get(config, paths[0]) | |
| } else { | |
| res = config | |
| } | |
| const output = toString(res, { verbose }) | |
| console.log(highlight(output, { language: 'js' })) | |
| // Log explanation for Nameless Rules | |
| if (hasUnnamedRule) { | |
| console.log(`--- ${chalk.green('Footnotes')} ---`) | |
| console.log(`*: ${chalk.green( | |
| 'Nameless Rules' | |
| )} were added through the ${chalk.green( | |
| 'configureWebpack()' | |
| )} API (possibly by a plugin) instead of ${chalk.green( | |
| 'chainWebpack()' | |
| )} (recommended). | |
| You can run ${chalk.green( | |
| 'vue-cli-service inspect' | |
| )} without any arguments to inspect the full config and read these rules' config.`) | |
| } | |
| } | |
| ) | |
| } | |
| module.exports.defaultModes = { | |
| inspect: 'development' | |
| } | |