From 0ae162015cf08865cc63a25bfa009b1034d84f71 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Wed, 1 Jul 2020 21:17:50 +0530 Subject: [PATCH] fix: show version information for plugin and loader --- packages/webpack-cli/lib/groups/HelpGroup.js | 3 ++- packages/webpack-cli/lib/utils/arg-parser.js | 9 +-------- packages/webpack-cli/lib/utils/commands.js | 14 +++++++++++++- test/version/version-external-packages.test.js | 16 ++++++++++++++++ 4 files changed, 32 insertions(+), 10 deletions(-) diff --git a/packages/webpack-cli/lib/groups/HelpGroup.js b/packages/webpack-cli/lib/groups/HelpGroup.js index ff0272a142d..dfe048231c7 100644 --- a/packages/webpack-cli/lib/groups/HelpGroup.js +++ b/packages/webpack-cli/lib/groups/HelpGroup.js @@ -1,5 +1,6 @@ const chalk = require('chalk'); const { core, commands } = require('../utils/cli-flags'); +const { defaultCommands } = require('../utils/commands'); const commandLineUsage = require('command-line-usage'); class HelpGroup { @@ -49,7 +50,7 @@ class HelpGroup { if (externalPkg && commandsUsed.length === 1 && invalidArgs.length === 0) { try { if (commandsUsed.includes(externalPkg.name)) { - const { name, version } = require(`@webpack-cli/${externalPkg.name}/package.json`); + const { name, version } = require(`@webpack-cli/${defaultCommands[externalPkg.name]}/package.json`); process.stdout.write(`\n${name} ${version}`); } else { const { name, version } = require(`${externalPkg.name}/package.json`); diff --git a/packages/webpack-cli/lib/utils/arg-parser.js b/packages/webpack-cli/lib/utils/arg-parser.js index db76c2f7ef5..0598d33bb0d 100644 --- a/packages/webpack-cli/lib/utils/arg-parser.js +++ b/packages/webpack-cli/lib/utils/arg-parser.js @@ -1,14 +1,7 @@ const commander = require('commander'); const logger = require('./logger'); -const defaultCommands = { - init: 'init', - loader: 'generate-loader', - plugin: 'generate-plugin', - info: 'info', - migrate: 'migrate', - serve: 'serve', -}; +const { defaultCommands } = require('./commands'); /** * Creates Argument parser corresponding to the supplied options diff --git a/packages/webpack-cli/lib/utils/commands.js b/packages/webpack-cli/lib/utils/commands.js index f9230987590..17c51d85f52 100644 --- a/packages/webpack-cli/lib/utils/commands.js +++ b/packages/webpack-cli/lib/utils/commands.js @@ -1,5 +1,14 @@ const { commands } = require('./cli-flags'); +const defaultCommands = { + init: 'init', + loader: 'generate-loader', + plugin: 'generate-plugin', + info: 'info', + migrate: 'migrate', + serve: 'serve', +}; + // Contains an array of strings with commands and their aliases that the cli supports const names = commands .map(({ alias, name }) => { @@ -10,4 +19,7 @@ const names = commands }) .reduce((arr, val) => arr.concat(val), []); -module.exports = { names }; +module.exports = { + defaultCommands, + names, +}; diff --git a/test/version/version-external-packages.test.js b/test/version/version-external-packages.test.js index 54c35616ecb..47de68f217e 100644 --- a/test/version/version-external-packages.test.js +++ b/test/version/version-external-packages.test.js @@ -5,6 +5,8 @@ const initPkgJSON = require('../../packages/init/package.json'); const servePkgJSON = require('../../packages/serve/package.json'); const migratePkgJSON = require('../../packages/migrate/package.json'); const infoPkgJSON = require('../../packages/info/package.json'); +const pluginPkgJSON = require('../../packages/generate-plugin/package.json'); +const loaderPkgJSON = require('../../packages/generate-loader/package.json'); const cliPkgJSON = require('../../packages/webpack-cli/package.json'); describe('version flag with external packages', () => { @@ -36,6 +38,20 @@ describe('version flag with external packages', () => { expect(stderr).toHaveLength(0); }); + it('outputs version with plugin', () => { + const { stdout, stderr } = run(__dirname, ['plugin', '--version'], false); + expect(stdout).toContain(pluginPkgJSON.version); + expect(stdout).toContain(cliPkgJSON.version); + expect(stderr).toHaveLength(0); + }); + + it('outputs version with loader', () => { + const { stdout, stderr } = run(__dirname, ['loader', '--version'], false); + expect(stdout).toContain(loaderPkgJSON.version); + expect(stdout).toContain(cliPkgJSON.version); + expect(stderr).toHaveLength(0); + }); + it(' should throw error for multiple commands', () => { const { stderr } = run(__dirname, ['init', 'migrate', '--version'], false); expect(stderr).toContain('You provided multiple commands.');