1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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' }))
-
- 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'
- }
|