diff --git a/packages/generate-loader/src/index.ts b/packages/generate-loader/src/index.ts index 40ffcefc346..ee7a7a6fa63 100644 --- a/packages/generate-loader/src/index.ts +++ b/packages/generate-loader/src/index.ts @@ -1,6 +1,8 @@ -import { loaderGenerator } from '@webpack-cli/generators'; import yeoman from 'yeoman-environment'; -import logger from 'webpack-cli/lib/utils/logger'; +import { loaderGenerator } from '@webpack-cli/generators'; +import { utils } from 'webpack-cli'; + +const { logger } = utils; /** * Runs a yeoman generator to create a new webpack loader project diff --git a/packages/generate-plugin/src/index.ts b/packages/generate-plugin/src/index.ts index abc32312534..3e5d4d55568 100644 --- a/packages/generate-plugin/src/index.ts +++ b/packages/generate-plugin/src/index.ts @@ -1,6 +1,8 @@ import { pluginGenerator } from '@webpack-cli/generators'; import yeoman from 'yeoman-environment'; -import logger from 'webpack-cli/lib/utils/logger'; +import { utils } from 'webpack-cli'; + +const { logger } = utils; /** * Runs a yeoman generator to create a new webpack plugin project diff --git a/packages/generators/__tests__/addon-generator.test.ts b/packages/generators/__tests__/addon-generator.test.ts index d8690c29f25..5c67838f3d7 100644 --- a/packages/generators/__tests__/addon-generator.test.ts +++ b/packages/generators/__tests__/addon-generator.test.ts @@ -5,9 +5,11 @@ jest.setMock('@webpack-cli/utils', { import fs from 'fs'; import path from 'path'; import rimraf from 'rimraf'; -import { getPackageManager } from 'webpack-cli/lib/utils/get-package-manager'; +import { utils } from 'webpack-cli'; import addonGenerator from '../src/addon-generator'; +const { getPackageManager } = utils; + // TODO: enable after jest release describe.skip('addon generator', () => { let gen, installMock, packageMock; diff --git a/packages/generators/src/addon-generator.ts b/packages/generators/src/addon-generator.ts index 538c837df20..37e99297852 100644 --- a/packages/generators/src/addon-generator.ts +++ b/packages/generators/src/addon-generator.ts @@ -1,9 +1,11 @@ -import logger from 'webpack-cli/lib/utils/logger'; import fs from 'fs'; import path from 'path'; import Generator from 'yeoman-generator'; import { generatorCopy, generatorCopyTpl } from '@webpack-cli/utils'; -import { getPackageManager } from 'webpack-cli/lib/utils/get-package-manager'; + +import { utils } from 'webpack-cli'; + +const { logger, getPackageManager } = utils; /** * Creates a Yeoman Generator that generates a project conforming diff --git a/packages/generators/src/init-generator.ts b/packages/generators/src/init-generator.ts index 3cc7fa85021..e77fdc3cb5a 100644 --- a/packages/generators/src/init-generator.ts +++ b/packages/generators/src/init-generator.ts @@ -1,8 +1,7 @@ import { blue, green, bold } from 'colorette'; -import logger from 'webpack-cli/lib/utils/logger'; +import { utils } from 'webpack-cli'; import logSymbols from 'log-symbols'; import path from 'path'; -import { getPackageManager } from 'webpack-cli/lib/utils/get-package-manager'; import { Confirm, Input, List } from '@webpack-cli/webpack-scaffold'; import { @@ -17,6 +16,8 @@ import { } from './utils'; import { CustomGenerator } from './types'; +const { logger, getPackageManager } = utils; + /** * * Generator for initializing a webpack config diff --git a/packages/info/src/index.ts b/packages/info/src/index.ts index 91502a51c23..fc8e0c23eab 100644 --- a/packages/info/src/index.ts +++ b/packages/info/src/index.ts @@ -1,7 +1,8 @@ import envinfo from 'envinfo'; -import logger from 'webpack-cli/lib/utils/logger'; -import { commands } from 'webpack-cli/lib/utils/cli-flags'; import WebpackCLI from 'webpack-cli'; +import { utils } from 'webpack-cli'; + +const { logger, commands } = utils; interface Information { Binaries?: string[]; diff --git a/packages/migrate/src/index.ts b/packages/migrate/src/index.ts index cb499c0d832..1a14eccc127 100644 --- a/packages/migrate/src/index.ts +++ b/packages/migrate/src/index.ts @@ -2,7 +2,6 @@ import { green, red } from 'colorette'; import { Change, diffLines } from 'diff'; import fs from 'fs'; import inquirer from 'inquirer'; -import logger from 'webpack-cli/lib/utils/logger'; import Listr from 'listr'; import pLazy = require('p-lazy'); import path from 'path'; @@ -11,6 +10,9 @@ import { runPrettier } from '@webpack-cli/utils'; import { transformations } from './migrate'; import { Node } from './types/NodePath'; import jscodeshift from 'jscodeshift'; +import { utils } from 'webpack-cli'; + +const { logger } = utils; declare let process: { cwd: Function; diff --git a/packages/migrate/src/removeDeprecatedPlugins/removeDeprecatedPlugins.ts b/packages/migrate/src/removeDeprecatedPlugins/removeDeprecatedPlugins.ts index 9e48d1b6d52..12d270e48e8 100644 --- a/packages/migrate/src/removeDeprecatedPlugins/removeDeprecatedPlugins.ts +++ b/packages/migrate/src/removeDeprecatedPlugins/removeDeprecatedPlugins.ts @@ -1,11 +1,13 @@ import { red, underline } from 'colorette'; -import logger from 'webpack-cli/lib/utils/logger'; - import { findPluginsByName, isType, safeTraverse } from '@webpack-cli/utils'; import { JSCodeshift, Node } from '../types/NodePath'; +import { utils } from 'webpack-cli'; + +const { logger } = utils; + /** * * Find deprecated plugins and remove them from the `plugins` array, if possible. diff --git a/packages/serve/src/parseArgs.ts b/packages/serve/src/parseArgs.ts index ff4cb7ddf63..b42f902f95e 100644 --- a/packages/serve/src/parseArgs.ts +++ b/packages/serve/src/parseArgs.ts @@ -1,4 +1,6 @@ -import logger from 'webpack-cli/lib/utils/logger'; +import { utils } from 'webpack-cli'; + +const { logger } = utils; type WebpackCLIType = { getCoreFlags: Function; diff --git a/packages/utils/__tests__/global-packages-path.test.ts b/packages/utils/__tests__/global-packages-path.test.ts index 467057d4657..5aa77543595 100644 --- a/packages/utils/__tests__/global-packages-path.test.ts +++ b/packages/utils/__tests__/global-packages-path.test.ts @@ -1,10 +1,11 @@ 'use strict'; -jest.setMock('webpack-cli/lib/utils/get-package-manager', { - getPackageManager: jest.fn(), -}); +jest.setMock('webpack-cli/lib/utils/get-package-manager', jest.fn()); import { getPathToGlobalPackages } from '../lib/global-packages-path'; -import { getPackageManager } from 'webpack-cli/lib/utils/get-package-manager'; +import { utils } from 'webpack-cli'; + +const { getPackageManager } = utils; + jest.mock('execa'); jest.mock('cross-spawn'); const globalModulesNpmValue = 'test-npm'; diff --git a/packages/utils/src/global-packages-path.ts b/packages/utils/src/global-packages-path.ts index acdc7fecc45..feac325b6d5 100644 --- a/packages/utils/src/global-packages-path.ts +++ b/packages/utils/src/global-packages-path.ts @@ -1,6 +1,8 @@ import spawn from 'cross-spawn'; import path from 'path'; -import { getPackageManager } from 'webpack-cli/lib/utils/get-package-manager'; +import { utils } from 'webpack-cli'; + +const { getPackageManager } = utils; /** * diff --git a/packages/utils/src/modify-config-helper.ts b/packages/utils/src/modify-config-helper.ts index aba3b571725..7103b066f35 100644 --- a/packages/utils/src/modify-config-helper.ts +++ b/packages/utils/src/modify-config-helper.ts @@ -1,11 +1,12 @@ import { green } from 'colorette'; import fs from 'fs'; -import logger from 'webpack-cli/lib/utils/logger'; import path from 'path'; import yeoman from 'yeoman-environment'; import Generator from 'yeoman-generator'; import { runTransform } from './scaffold'; -import { getPackageManager } from 'webpack-cli/lib/utils/get-package-manager'; +import { utils } from 'webpack-cli'; + +const { logger, getPackageManager } = utils; export interface Config extends Object { item?: { diff --git a/packages/utils/src/recursive-parser.ts b/packages/utils/src/recursive-parser.ts index 0bdcdf81ba0..ce8888082e8 100644 --- a/packages/utils/src/recursive-parser.ts +++ b/packages/utils/src/recursive-parser.ts @@ -1,7 +1,8 @@ import { parseTopScope, findRootNodesByName, addProperty, removeProperty, parseMerge, safeTraverse } from './ast-utils'; import { JSCodeshift, Node, valueType } from './types/NodePath'; +import { utils } from 'webpack-cli'; -import logger from 'webpack-cli/lib/utils/logger'; +const { logger } = utils; export function recursiveTransform(j: JSCodeshift, ast: Node, key: string, value: valueType, action: string): boolean | Node { if (key === 'topScope') { diff --git a/packages/utils/src/resolve-packages.ts b/packages/utils/src/resolve-packages.ts index 9fa19f2ca80..ce5eddae437 100644 --- a/packages/utils/src/resolve-packages.ts +++ b/packages/utils/src/resolve-packages.ts @@ -1,11 +1,13 @@ import { bold } from 'colorette'; -import logger from 'webpack-cli/lib/utils/logger'; import path from 'path'; import { modifyHelperUtil } from './modify-config-helper'; import { getPathToGlobalPackages } from './global-packages-path'; import { spawnChild } from './spawn-child'; import { isLocalPath } from './path-utils'; import { ExecaSyncReturnValue } from 'execa'; +import { utils } from 'webpack-cli'; + +const { logger } = utils; interface ChildProcess { status: number; diff --git a/packages/utils/src/run-prettier.ts b/packages/utils/src/run-prettier.ts index 6de24cab637..d2612d04849 100644 --- a/packages/utils/src/run-prettier.ts +++ b/packages/utils/src/run-prettier.ts @@ -1,5 +1,7 @@ import fs from 'fs'; -import logger from 'webpack-cli/lib/utils/logger'; +import { utils } from 'webpack-cli'; + +const { logger } = utils; /** * diff --git a/packages/utils/src/scaffold.ts b/packages/utils/src/scaffold.ts index 18383e30e6a..f4d21e130c6 100644 --- a/packages/utils/src/scaffold.ts +++ b/packages/utils/src/scaffold.ts @@ -1,9 +1,7 @@ import { green } from 'colorette'; import j from 'jscodeshift'; -import logger from 'webpack-cli/lib/utils/logger'; import pEachSeries = require('p-each-series'); import path from 'path'; -import { getPackageManager } from 'webpack-cli/lib/utils/get-package-manager'; import { findProjectRoot } from './path-utils'; import { Error } from './types'; import { Config, TransformConfig } from './types'; @@ -11,6 +9,9 @@ import { PROP_TYPES } from './prop-types'; import { recursiveTransform } from './recursive-parser'; import { runPrettier } from './run-prettier'; import { Node } from './types/NodePath'; +import { utils } from 'webpack-cli'; + +const { logger, getPackageManager } = utils; /** * diff --git a/packages/utils/src/spawn-child.ts b/packages/utils/src/spawn-child.ts index 93b10a9f79e..a26e9f24379 100644 --- a/packages/utils/src/spawn-child.ts +++ b/packages/utils/src/spawn-child.ts @@ -2,7 +2,9 @@ import path from 'path'; import fs from 'fs'; import { ExecaSyncReturnValue, sync } from 'execa'; import { getPathToGlobalPackages } from './global-packages-path'; -import { getPackageManager } from 'webpack-cli/lib/utils/get-package-manager'; +import { utils } from 'webpack-cli'; + +const { getPackageManager } = utils; /** * diff --git a/packages/webpack-cli/lib/index.js b/packages/webpack-cli/lib/index.js new file mode 100644 index 00000000000..f284f9074db --- /dev/null +++ b/packages/webpack-cli/lib/index.js @@ -0,0 +1,13 @@ +const WebpackCLI = require('./webpack-cli'); +const { commands } = require('./utils/cli-flags'); +const logger = require('./utils/logger'); +const getPackageManager = require('./utils/get-package-manager'); + +module.exports = WebpackCLI; + +// export additional utils used by other packages +module.exports.utils = { + logger, + commands, + getPackageManager, +}; diff --git a/packages/webpack-cli/lib/utils/__tests__/get-package-manager.test.js b/packages/webpack-cli/lib/utils/__tests__/get-package-manager.test.js index b11c0113d86..61350f3e520 100644 --- a/packages/webpack-cli/lib/utils/__tests__/get-package-manager.test.js +++ b/packages/webpack-cli/lib/utils/__tests__/get-package-manager.test.js @@ -9,7 +9,7 @@ const syncMock = jest.fn(() => { jest.setMock('execa', { sync: syncMock, }); -const { getPackageManager } = require('../get-package-manager'); +const getPackageManager = require('../get-package-manager'); jest.mock('cross-spawn'); const globalModulesNpmValue = 'test-npm'; diff --git a/packages/webpack-cli/lib/utils/__tests__/prompt-installation.test.js b/packages/webpack-cli/lib/utils/__tests__/prompt-installation.test.js index 2108828c010..6a0b54e3f25 100644 --- a/packages/webpack-cli/lib/utils/__tests__/prompt-installation.test.js +++ b/packages/webpack-cli/lib/utils/__tests__/prompt-installation.test.js @@ -16,11 +16,9 @@ jest.setMock('../package-exists', { packageExists: jest.fn(), }); -jest.setMock('../get-package-manager', { - getPackageManager: jest.fn(), -}); +jest.setMock('../get-package-manager', jest.fn()); -const { getPackageManager } = require('../get-package-manager'); +const getPackageManager = require('../get-package-manager'); const { packageExists } = require('../package-exists'); const { promptInstallation } = require('../prompt-installation'); const { runCommand } = require('../run-command'); diff --git a/packages/webpack-cli/lib/utils/get-package-manager.js b/packages/webpack-cli/lib/utils/get-package-manager.js index 7ac3efb9c07..9d6b4125604 100644 --- a/packages/webpack-cli/lib/utils/get-package-manager.js +++ b/packages/webpack-cli/lib/utils/get-package-manager.js @@ -30,6 +30,4 @@ function getPackageManager() { return 'npm'; } -module.exports = { - getPackageManager, -}; +module.exports = getPackageManager; diff --git a/packages/webpack-cli/lib/utils/prompt-installation.js b/packages/webpack-cli/lib/utils/prompt-installation.js index 8b5b4c37800..377e58e7d3b 100644 --- a/packages/webpack-cli/lib/utils/prompt-installation.js +++ b/packages/webpack-cli/lib/utils/prompt-installation.js @@ -1,7 +1,7 @@ const { prompt } = require('enquirer'); const { green } = require('colorette'); const { runCommand } = require('./run-command'); -const { getPackageManager } = require('./get-package-manager'); +const getPackageManager = require('./get-package-manager'); const { packageExists } = require('./package-exists'); /** diff --git a/packages/webpack-cli/package.json b/packages/webpack-cli/package.json index 67855ac6601..a825d95a580 100644 --- a/packages/webpack-cli/package.json +++ b/packages/webpack-cli/package.json @@ -10,7 +10,7 @@ "bin": { "webpack-cli": "./bin/cli.js" }, - "main": "./lib/webpack-cli.js", + "main": "./lib/index.js", "engines": { "node": ">=10.13.0" },