From 92ad475d4b9606b5db7c31dd3666658301c95597 Mon Sep 17 00:00:00 2001 From: Alexander Akait Date: Thu, 15 Oct 2020 20:36:26 +0300 Subject: [PATCH] fix: move init command to separate package (#1950) --- .../utils/__tests__/package-exists.test.js | 2 +- packages/webpack-cli/lib/utils/arg-parser.js | 4 +++- .../resolve-command.js} | 21 +++++++++++++++---- packages/webpack-cli/package.json | 4 +++- 4 files changed, 24 insertions(+), 7 deletions(-) rename packages/webpack-cli/lib/{commands/resolveCommand.js => utils/resolve-command.js} (65%) diff --git a/packages/webpack-cli/lib/utils/__tests__/package-exists.test.js b/packages/webpack-cli/lib/utils/__tests__/package-exists.test.js index 309f479c408..f16b263f695 100644 --- a/packages/webpack-cli/lib/utils/__tests__/package-exists.test.js +++ b/packages/webpack-cli/lib/utils/__tests__/package-exists.test.js @@ -2,7 +2,7 @@ jest.setMock('../prompt-installation', { promptInstallation: jest.fn(), }); -const ExternalCommand = require('../../commands/resolveCommand'); +const ExternalCommand = require('../resolve-command'); const { packageExists } = require('../package-exists'); const { promptInstallation } = require('../prompt-installation'); diff --git a/packages/webpack-cli/lib/utils/arg-parser.js b/packages/webpack-cli/lib/utils/arg-parser.js index c72ad1bd7d4..dc2fbe82729 100644 --- a/packages/webpack-cli/lib/utils/arg-parser.js +++ b/packages/webpack-cli/lib/utils/arg-parser.js @@ -28,8 +28,10 @@ const argParser = (options, args, argsOnly = false, name = '') => { .allowUnknownOption(true) .action(async () => { const cliArgs = args.slice(args.indexOf(cmd.name) + 1 || args.indexOf(cmd.alias) + 1); - return await require('../commands/resolveCommand')(defaultCommands[cmd.name], ...cliArgs); + + return await require('./resolve-command')(defaultCommands[cmd.name], ...cliArgs); }); + return parser; }, parser); diff --git a/packages/webpack-cli/lib/commands/resolveCommand.js b/packages/webpack-cli/lib/utils/resolve-command.js similarity index 65% rename from packages/webpack-cli/lib/commands/resolveCommand.js rename to packages/webpack-cli/lib/utils/resolve-command.js index fae1398cd03..0d115cd3a91 100644 --- a/packages/webpack-cli/lib/commands/resolveCommand.js +++ b/packages/webpack-cli/lib/utils/resolve-command.js @@ -1,13 +1,15 @@ const { yellow, cyan } = require('colorette'); -const logger = require('../utils/logger'); -const { packageExists } = require('../utils/package-exists'); -const { promptInstallation } = require('../utils/prompt-installation'); +const logger = require('./logger'); +const { packageExists } = require('./package-exists'); +const { promptInstallation } = require('./prompt-installation'); const packagePrefix = '@webpack-cli'; const run = async (name, ...args) => { const scopeName = packagePrefix + '/' + name; + let pkgLoc = packageExists(scopeName); + if (!pkgLoc) { try { pkgLoc = await promptInstallation(`${scopeName}`, () => { @@ -17,7 +19,18 @@ const run = async (name, ...args) => { logger.error(`Action Interrupted, use ${cyan('webpack-cli help')} to see possible commands.`); } } - return pkgLoc ? require(scopeName).default(...args) : null; + + if (!pkgLoc) { + return; + } + + let mod = require(scopeName); + + if (mod.default) { + mod = mod.default; + } + + return mod(...args); }; module.exports = run; diff --git a/packages/webpack-cli/package.json b/packages/webpack-cli/package.json index e1291730c6a..f162b699a1f 100644 --- a/packages/webpack-cli/package.json +++ b/packages/webpack-cli/package.json @@ -28,7 +28,6 @@ ], "dependencies": { "@webpack-cli/info": "^1.0.1", - "@webpack-cli/init": "^1.0.1", "@webpack-cli/serve": "^1.0.1", "ansi-escapes": "^4.3.1", "colorette": "^1.2.1", @@ -46,6 +45,9 @@ "webpack": "4.x.x || 5.x.x" }, "peerDependenciesMeta": { + "@webpack-cli/init": { + "optional": true + }, "@webpack-cli/generate-loader": { "optional": true },