Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

webpack-cli v4 beta feedback and changes #1222

Closed
ematipico opened this issue Feb 12, 2020 · 45 comments
Closed

webpack-cli v4 beta feedback and changes #1222

ematipico opened this issue Feb 12, 2020 · 45 comments

Comments

@ematipico
Copy link
Contributor

About v4

With webpack-cli v4 we will support only webpack v5 and possibly v4 but not officially, so if there are any problems we suggest to use v3.* if you still want to keep the best compatibility.

We dropped Node.js 8 from our CI. We support at least Node.js 10.

What's changing

Less arguments

We drastically reduced the number of arguments that we support. This is because we think most of them are not used by anyone (or used inside a configuration file). Run

webpack --help

To check the arguments supported.

If you think that we wrongly removed an argument that you thought it was useful, please leave a comment here and we can discuss its implementation. (add a 👍 if someone already requested an argument you need)

.webpack folder support

The CLI now supports the .webpack folder by default. This feature is still in beta so it would be great if people could start using it. Files that are automatically imported:

  • .webpack/webpack.config.dev
  • .webpack/webpack.config.prod
  • .webpack/webpackfile
  • webpack.config

Changed default output

We wanted to change a bit the output emitted via CLI.

✅ Compilation Results

🌏 Version: 5.0.0-beta.12
⚒️  Built: Wed Feb 12 2020 09:05:53 GMT+0100 (Central European Standard Time)
⏱  Compile Time: 265ms
📂 Output Directory: /Users/***/www/webpack-cli/test/entry/defaults-index/dist
#️⃣ Hash: 0b145a012a5ce8805b14

┌────────────┬───────────────────────────────┐
│ Entrypoint │ Bundle                        │
├────────────┼───────────────────────────────┤
│ main       │  Bundle Name       │ main.js  │
│            │  Compared For Emit │ true     │
│            │  Bundle size       │ 0.00 kb  │
│            │                               │
│            │ Modules:                      │
│            │ ./index.js [size: 1 bytes]    │
└────────────┴───────────────────────────────┘

Don't worry, you can still go to the old output using the --standard flag.

Arguments --dev and --prod

Now you can pass the mode to the compiler using these two simple arguments.

Help for single arguments

Running the following command

webpack help --dev

Will output

Usage: webpack --dev
Description: Run development build
Documentation: https://webpack.js.org/concepts/#mode
@t-fritsch
Copy link

Hello,

I tested beta2 unintentionally with my students very quickly 2 days ago (In fact I didn't notice until they told me that the options I asked them to use were throwing errors, when I realized 4.0.0-beta2 had just been published I told them to downgrade to make my exercise work ! 😄 )

Not a big deal but even if I understand the point of having clean and concise --dev and --prod options, I think the --mode= option better matches the way it works in configuration file and is more straightforward when you already know configuration file. Just my 2 cents, but I'm not sure a breaking change in this area is really useful ?

Anyway, thanks for the great work here 👏

@jhnns
Copy link
Member

jhnns commented Feb 14, 2020

Hey ho 👋

Removing some of the flags is a good idea 👍

But there are two features I really use a lot that are currently not implemented in v4:

  • Passing --env: I personally don't like to split the configuration into separate files since it becomes very hard to understand what the final configuration is going to be. I respect that some people prefer to split the configuration but I think that the webpack-cli should also support single-file configurations. And for single-file configs, the --env feature is really nice. This has already been requested in Unknown argument: --env #1216.

  • Using TypeScript in webpack configs: If I try to run webpack with a webpack.config.ts it currently throws an error:

webpack:  TypeError [ERR_INVALID_ARG_TYPE]: The "id" argument must be of type string. Received type undefined
    at validateString (internal/validators.js:112:11)
    at Module.require (internal/modules/cjs/loader.js:841:3)
    at require (internal/modules/cjs/helpers.js:74:18)
    at [...]/node_modules/webpack-cli/lib/groups/ConfigGroup.js:66:39
    at Array.forEach (<anonymous>)
    at ConfigGroup.requireConfig ([...]/node_modules/webpack-cli/lib/groups/ConfigGroup.js:65:33)
    at Array.map (<anonymous>)
    at ConfigGroup.resolveConfigFiles ([...]/node_modules/webpack-cli/lib/groups/ConfigGroup.js:144:44)
    at ConfigGroup.run ([...]/node_modules/webpack-cli/lib/groups/ConfigGroup.js:183:14)
    at WebpackCLI._handleGroupHelper ([...]/node_modules/webpack-cli/lib/webpack-cli.js:212:40) {
  code: 'ERR_INVALID_ARG_TYPE'
}

The configModule in ConfigGroup.prototype.requireConfig looks like this:

{
  path: '[...]/webpack.config.ts',
  ext: '.ts',
  module: [
    'ts-node/register',
    'typescript-node/register',
    'typescript-register',
    'typescript-require',
    { module: '@babel/register', register: [Function: register] }
  ]
}

Is this a bug or are you planning to drop support for TypeScript configs? Using TS in webpack configs is really nice because of Intellisense and type checking.

I'm going to present both features in my upcoming talk next week at the Frontend Developer Love Conference in Amsterdam and I don't want to advertise deprecated features 😁.

@jpreynat
Copy link

Hi,

Following @jhnns message, using a file webpack.config.babel.js also leads to an error after switching from webpack 3 to the 4.0.0-beta.3:
Error: Cannot find module 'babel-register'

Are support for babel and typescript been made opt-in using peer-dependencies?
It seems that switching to .mjs works, but it would be great to know what we can/can't do with the new beta.
Thanks in advance.

@ematipico
Copy link
Contributor Author

ematipico commented Feb 22, 2020

Seamless support for typescript and babel is not deprecated, it was a bug. We're working on restoring these features :)

@exKAZUu
Copy link

exKAZUu commented Mar 2, 2020

@ematipico 4.0.0-beta.7 doesn't work well due to Error: Cannot find module '@webpack-cli/logger'. The published @webpack-cli/logger@1.0.1-alpha.3 package seems to contain no lib directory as follows:

$ pwd
/Users/XXXX/test/node_modules/@webpack-cli/logger
$ ls
CHANGELOG.md LICENSE      README.md    package.json

@ematipico
Copy link
Contributor Author

Thank you @exKAZUu , I will check this out

@ematipico
Copy link
Contributor Author

@exKAZUu the latest beta should work now!

@exKAZUu
Copy link

exKAZUu commented Mar 3, 2020

Confirmed. Thanks!

@chumbalum
Copy link

I second @jhnns comment on the --env parameter. It's pretty handy for single file configs and should be kept in my opinion.

@mstssk
Copy link

mstssk commented May 25, 2020

4.0.0-beta.8 does not fails when errors occur in loaders.

For example:
ts-loader raise a error when compiling wrong typescript code, however webpack returns exit code 0.

@alexander-akait
Copy link
Member

@mstssk Can you open a new issue with reproducible test repo?

@mstssk
Copy link

mstssk commented May 25, 2020

@evilebottnawi Thank you. I wrote #1581

@criles25
Copy link

I am trying to write my webpack.config.js as a function, e.g.,

module.exports = function(env, argv) {
...

but the v4 beta doesn't seem to recognize it. Does this syntax no longer work?

i was wanting to read env vars in my webpack config file, is there some other way to get access to env vars in the config?

also, i'm enjoying the new features. the webpack serve is working great, and the --prod flag if helpful. thanks.

@alexander-akait
Copy link
Member

/cc @webpack/cli-team Need to add test with config like a function

@snitin315
Copy link
Member

snitin315 commented May 26, 2020

/cc @webpack/cli-team Need to add test with config like a function

On it 💯

@snitin315
Copy link
Member

@anshumanv
Copy link
Member

@evilebottnawi we should add the env flag, comes in handy in case of single config which performs differently as per the env.

@snitin315
Copy link
Member

+1 for --env

@alexander-akait
Copy link
Member

Go ahead

@anshumanv
Copy link
Member

WIP

@doasync
Copy link

doasync commented Jul 15, 2020

There is a warning when webpack-cli v4 is used with webpack v5:

  "devDependencies": {
    "webpack": "5.0.0-beta.22",
    "webpack-cli": "4.0.0-beta.8"
  }

➤ YN0000: ┌ Resolution step
➤ YN0002: │ @webpack-cli/package-utils@npm:1.0.1-alpha.4 doesn't provide webpack@^4.41.6 requested by @webpack-cli/logger@npm:1.0.1-alpha.4
➤ YN0060: │ webpack-cli@npm:4.0.0-beta.8 [1d845] provides webpack@npm:5.0.0-beta.22 with version 5.0.0-beta.22 which doesn't satisfy ^4.41.6 requested by @webpack-cli/logger@npm:1.0.1-alpha.4
➤ YN0000: └ Completed

@alexander-akait
Copy link
Member

It is expected, after stable release no warnings

@Toge66
Copy link

Toge66 commented Jul 29, 2020

"webpack": "^4.43.0",
"webpack-cli": "^4.0.0-beta.8"

dir

├── src
│   ├── app.js
│   ├── index.js
│   └── print.js
└── webpack.config.js

webpack.config

const path = require('path');

module.exports = {
  mode: 'development',
  entry: {
    app: './src/app.js',
    print: './src/print.js'
  },
  output: {
    filename: '[name].bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};

whie I run webpack output file is main.bundle.js but I want app.bundle.js print.bundle.js

➜  day1 git:(OutputManagement) ✗ npm run build

> webpack-demo@1.0.0 build /Users/toge/Desktop/S/webpackDemo/day1
> webpack


✅ Compilation Results

🌏 Version: 4.44.0
⚒️  Built: Wed Jul 29 2020 17:29:33 GMT+0800 (中国标准时间)
⏱  Compile Time: 62ms
📂 Output Directory: /Users/toge/Desktop/S/webpackDemo/day1/dist
#️⃣ Hash: 6d591a19d872d97f1e02

┌────────────┬──────────────────────────────────────┐
│ Entrypoint │ Bundle                               │
├────────────┼──────────────────────────────────────┤
│            │  Bundle Name       │ main.bundle.js  │
│            │  Compared For Emit │                 │
│            │  Bundle size       │ 3.88 kb         │
│            │                                      │
│            │ Modules:                             │
│            │ ./src/index.js [size: 24 bytes]      │
└────────────┴──────────────────────────────────────┘

when I del the index.js, It's OK

├── src
│   ├── app.js
│   └── print.js
└── webpack.config.js
➜  day1 git:(OutputManagement) ✗ npm run build

> webpack-demo@1.0.0 build /Users/toge/Desktop/S/webpackDemo/day1
> webpack


✅ Compilation Results

🌏 Version: 4.44.0
⚒️  Built: Wed Jul 29 2020 17:35:59 GMT+0800 (中国标准时间)
⏱  Compile Time: 75ms
📂 Output Directory: /Users/toge/Desktop/S/webpackDemo/day1/dist
#️⃣ Hash: 585ff9566fdc2fba6ea4

┌────────────┬───────────────────────────────────────┐
│ Entrypoint │ Bundle                                │
├────────────┼───────────────────────────────────────┤
│            │  Bundle Name       │ app.bundle.js    │
│            │  Compared For Emit │                  │
│            │  Bundle size       │ 4.97 kb          │
│            │                                       │
│            │ Modules:                              │
│            │ ./src/app.js [size: 356 bytes]        │
│            │ ./src/print.js [size: 84 bytes]       │
│            │  Bundle Name       │ print.bundle.js  │
│            │  Compared For Emit │                  │
│            │  Bundle size       │ 4.15 kb          │
│            │                                       │
│            │ Modules:                              │
│            │ ./src/print.js [size: 84 bytes]       │
└────────────┴───────────────────────────────────────┘

@anshumanv
Copy link
Member

Hi @Toge66 thanks for your feedback!

To me it looks like a bug in the beta release but it doesn't seem to happen now in the latest branch so I've added a test for your case in #1718.

Maybe @evilebottnawi we should tag a new release since it's been quite long since the last version was tagged and a lot of work as gone in.

@alexander-akait
Copy link
Member

@anshumanv Yes, we need to do the new release, I think we can do it at the new week

@Demivan
Copy link

Demivan commented Aug 5, 2020

webpack serve does not work with yarn@2.
It keeps prompting to install @webpack-cli/serve. After adding some logging I found that packageExists from @webpack-cli/package-utils throws this:

Error: A package is trying to access another package without the second one being listed as a dependency of the first one

Required package: @webpack-cli/serve (via "@webpack-cli/serve")
Required by: @webpack-cli/package-utils@npm:1.0.1-alpha.4

@alexander-akait
Copy link
Member

@Demivan we have PR on this

@axetroy
Copy link

axetroy commented Aug 6, 2020

Hi! I get a problem when using webpack-cli@4.0.0-beta.8 in Github Action.

It seems that this is not a tty

https://github.com/axetroy/anti-redirect/pull/271/checks?check_run_id=952326284

yarn run v1.22.4
$ cross-env NODE_ENV=production webpack --progress

[webpack-cli] Promise rejection: TypeError: process.stdout.clearLine is not a function
[webpack-cli] TypeError: process.stdout.clearLine is not a function
    at defaultProgressPluginHandler (/home/runner/work/anti-redirect/anti-redirect/node_modules/webpack-cli/lib/utils/Compiler.js:23:36)
    at Object.call (/home/runner/work/anti-redirect/anti-redirect/node_modules/webpack/lib/ProgressPlugin.js:491:6)
    at Hook.eval [as callAsync] (eval at create (/home/runner/work/anti-redirect/anti-redirect/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:18)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/home/runner/work/anti-redirect/anti-redirect/node_modules/tapable/lib/Hook.js:18:14)
    at /home/runner/work/anti-redirect/anti-redirect/node_modules/webpack/lib/Compiler.js:444:20
    at Hook.eval (eval at create (/home/runner/work/anti-redirect/anti-redirect/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:22:1)
    at Hook.CALL_ASYNC_DELEGATE (/home/runner/work/anti-redirect/anti-redirect/node_modules/tapable/lib/Hook.js:18:14)
    at run (/home/runner/work/anti-redirect/anti-redirect/node_modules/webpack/lib/Compiler.js:441:25)
    at Compiler.run (/home/runner/work/anti-redirect/anti-redirect/node_modules/webpack/lib/Compiler.js:464:4)
    at /home/runner/work/anti-redirect/anti-redirect/node_modules/webpack-cli/lib/utils/Compiler.js:134:33
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

@snitin315
Copy link
Member

snitin315 commented Aug 6, 2020

@axetroy This is fixed but not yet released.

@axetroy
Copy link

axetroy commented Aug 7, 2020

@axetroy This is fixed but not yet released.

@snitin315 I found that the latest version was released on March 2.

Can you let me known me about when the new version will be released?

Because I used webpack-cli@v4 in my project. CI is not passed and I cannot release a new version.

It will depend on whether I want to downgrade to webpack-cli@v3.

Thx

@snitin315
Copy link
Member

/cc @evilebottnawi can you do a release?

@rkumorek
Copy link

rkumorek commented Aug 7, 2020

Hey,

Few days ago I wanted to try out webpack 5 and newest webpack/cli, most of the migration went well except it seems like I cannot change stats output. I've created simple test project:

// package.json
"dependencies": {
  "webpack": "^5.0.0-beta.24",
  "webpack-cli": "^4.0.0-beta.8"
}

// index.js
class Test {
  constructor() {
    this._load();
  }

  async _load() {
    const { AF } = await import("./async");
    console.log(AF);
  }
}

export { Test };

// async.js
export const AF = {
  async: true,
};

Whenever I build it the stats look like this:

 Compilation Results

 Version: 5.0.0-beta.24
 Built: Fri Aug 07 2020 22:44:13 GMT+0100 (British Summer Time)
 Compile Time: 262ms
 Output Directory: /home/raflus/projects/webpack/dist
 Hash: 948f3455615e28bc9cf0

┌────────────┬─────────────────────────────────────────────────────────────────┐
│ Entrypoint │ Bundle                                                          │
├────────────┼─────────────────────────────────────────────────────────────────┤
│ main       │  Bundle Name       │ main.js                                    │
│            │  Compared For Emit │ false                                      │
│            │  Bundle size       │ 2.04 kb                                    │
│            │                                                                 │
│            │ Modules:                                                        │
│            │ ./index.js [size: 161 bytes]                                    │
│            │ webpack/runtime/define property getters [size: 308 bytes]       │
│            │ webpack/runtime/ensure chunk [size: 326 bytes]                  │
│            │ webpack/runtime/get javascript chunk filename [size: 167 bytes] │
│            │ webpack/runtime/hasOwnProperty shorthand [size: 86 bytes]       │
│            │ webpack/runtime/jsonp chunk loading [size: 3012 bytes]          │
│            │ webpack/runtime/load script [size: 1493 bytes]                  │
│            │ webpack/runtime/make namespace object [size: 274 bytes]         │
│            │ webpack/runtime/publicPath [size: 27 bytes]                     │
└────────────┴─────────────────────────────────────────────────────────────────┘

I really like the new format but I got few issues with it. First, I was unable to clean it up a bit, I've tried to use all sort of options from stats config but the output is always the same. Another thing is it doesn't show that it emited 2 files, it only shows entrypoint.

I am not sure how much work in progress it is so any information would be appreciated.

// example webpack.config.js
module.exports = {
  mode: "production",
  stats: {
    all: undefined,
  },
};

I tried loking in other issues in this repo or webpack but haven't found anything useful on my own.
Apologies if I am posting it in wrong issue or if it was discussed somewhere else.

Thanks!

@alexander-akait
Copy link
Member

We will try to do the next release on this week

@eamodio
Copy link

eamodio commented Sep 2, 2020

Any update on a new beta release?

@alexander-akait
Copy link
Member

@webpack/cli-team friendly ping, we need to finish PRs

@billyjanitsch
Copy link
Member

Please, please reconsider having webpack-cli depend directly on @webpack-cli/init (#1609). The latter is an enormous module with so many dependencies (particularly jscodeshift, which is huge and very outdated). This doesn't affect bundle size, of course, but it does affect install time and npm's ability to dedupe modules. Plus, the init functionality is only useful when initializing a project, and most projects probably don't use it to initialize themselves anyway.

This issue came up back when webpack v4 was in beta. There's nothing wrong with @webpack-cli/init existing, but webpack-cli is currently required to invoke webpack via CLI and it would be really nice to have some way of doing this without bringing in half of the npm registry. All that most people need is to be able to add a simple build script to package.json. webpack-cli v3 did the right thing by including only this minimal core.

In an empty project, npm install webpack-cli@next (4.0.0-rc.0) currently installs 82mb of dependencies (!) whereas npm install webpack-cli@3 only installs 6mb.

@alexander-akait
Copy link
Member

@billyjanitsch
Copy link
Member

https://arve0.github.io/npm-download-size/#webpack-cli@next

@evilebottnawi that website is only tracking the size of direct dependencies. For example, it shows 12.11 MiB but if you click on @webpack-cli/init @ 1.0.1-rc.0 -- 11.3 MiB (606 deps) it shows 19.44 MiB, and so on, recursively.

Try this:

mkdir foo
cd foo
npm install webpack-cli@next
du -sh node_modules/

You get:

82M    node_modules/

@alexander-akait
Copy link
Member

@billyjanitsch can you run npm ls? and put it here?

@billyjanitsch
Copy link
Member

@evilebottnawi yes, no problem:

Expand
├── UNMET PEER DEPENDENCY webpack@4.x.x || 5.x.x
└─┬ webpack-cli@4.0.0-rc.0
├─┬ @webpack-cli/info@1.0.1-rc.0
│ ├── colorette@1.2.1 deduped
│ ├── envinfo@7.5.0
│ └─┬ prettyjson@1.2.1
│   ├── colors@1.4.0
│   └── minimist@1.2.5
├─┬ @webpack-cli/init@1.0.1-rc.0
│ ├─┬ @webpack-cli/generators@1.0.1-rc.0
│ │ ├── @webpack-cli/package-utils@1.0.1-rc.0 deduped
│ │ ├── @webpack-cli/utils@1.0.1-rc.0 deduped
│ │ ├─┬ @webpack-cli/webpack-scaffold@1.0.1-rc.0
│ │ │ ├── jscodeshift@0.7.0 deduped
│ │ │ └── yeoman-generator@4.7.2 deduped
│ │ ├── colorette@1.2.1 deduped
│ │ ├── lodash@4.17.19 deduped
│ │ ├─┬ log-symbols@3.0.0
│ │ │ └── chalk@2.4.2 deduped
│ │ ├── mkdirp@1.0.3
│ │ ├── UNMET PEER DEPENDENCY webpack@4.x.x || 5.x.x
│ │ ├── UNMET PEER DEPENDENCY webpack-cli@4.x.x || 5.x.x
│ │ └─┬ yeoman-generator@4.7.2
│ │   ├─┬ async@2.6.3
│ │   │ └── lodash@4.17.19 deduped
│ │   ├── chalk@2.4.2 deduped
│ │   ├─┬ cli-table@0.3.1
│ │   │ └── colors@1.0.3 extraneous
│ │   ├── cross-spawn@6.0.5 extraneous
│ │   ├── dargs@6.1.0
│ │   ├── dateformat@3.0.3
│ │   ├─┬ debug@4.2.0
│ │   │ └── ms@2.1.2
│ │   ├── diff@4.0.2 extraneous
│ │   ├─┬ error@7.2.1
│ │   │ └── string-template@0.2.1
│ │   ├─┬ find-up@3.0.0
│ │   │ └─┬ locate-path@3.0.0
│ │   │   ├─┬ p-locate@3.0.0
│ │   │   │ └─┬ p-limit@2.3.0
│ │   │   │   └── p-try@2.2.0 deduped
│ │   │   └── path-exists@3.0.0
│ │   ├─┬ github-username@3.0.0
│ │   │ └─┬ gh-got@5.0.0
│ │   │   ├── got@6.7.1 extraneous
│ │   │   └── is-plain-obj@1.1.0
│ │   ├─┬ istextorbinary@2.6.0
│ │   │ ├── binaryextensions@2.3.0
│ │   │ ├─┬ editions@2.3.1
│ │   │ │ ├── errlop@2.2.0
│ │   │ │ └── semver@6.3.0 extraneous
│ │   │ └── textextensions@2.6.0
│ │   ├── lodash@4.17.19 deduped
│ │   ├── make-dir@3.1.0 extraneous
│ │   ├─┬ mem-fs-editor@6.0.0
│ │   │ ├── commondir@1.0.1
│ │   │ ├── deep-extend@0.6.0 deduped
│ │   │ ├── ejs@2.7.4
│ │   │ ├─┬ glob@7.1.6
│ │   │ │ ├── fs.realpath@1.0.0
│ │   │ │ ├─┬ inflight@1.0.6
│ │   │ │ │ ├── once@1.4.0 deduped
│ │   │ │ │ └── wrappy@1.0.2 deduped
│ │   │ │ ├── inherits@2.0.4 deduped
│ │   │ │ ├── minimatch@3.0.4 deduped
│ │   │ │ ├── once@1.4.0 deduped
│ │   │ │ └── path-is-absolute@1.0.1
│ │   │ ├── globby@9.2.0 extraneous
│ │   │ ├── isbinaryfile@4.0.6
│ │   │ ├── mkdirp@0.5.5 extraneous
│ │   │ ├─┬ multimatch@4.0.0
│ │   │ │ ├── @types/minimatch@3.0.3
│ │   │ │ ├── array-differ@3.0.0
│ │   │ │ ├── array-union@2.1.0 extraneous
│ │   │ │ ├── arrify@2.0.1 extraneous
│ │   │ │ └── minimatch@3.0.4 deduped
│ │   │ ├── rimraf@2.6.3 deduped
│ │   │ ├── through2@3.0.2 deduped
│ │   │ └─┬ vinyl@2.2.1
│ │   │   ├── clone@2.1.2
│ │   │   ├── clone-buffer@1.0.0
│ │   │   ├── clone-stats@1.0.0
│ │   │   ├─┬ cloneable-readable@1.1.3
│ │   │   │ ├── inherits@2.0.4 deduped
│ │   │   │ ├── process-nextick-args@2.0.1
│ │   │   │ └── readable-stream@2.3.7 extraneous
│ │   │   ├── remove-trailing-separator@1.1.0
│ │   │   └── replace-ext@1.0.1
│ │   ├── minimist@1.2.5 deduped
│ │   ├── pretty-bytes@5.4.1
│ │   ├─┬ read-chunk@3.2.0
│ │   │ ├── pify@4.0.1
│ │   │ └─┬ with-open-file@0.1.7
│ │   │   ├── p-finally@1.0.0
│ │   │   ├── p-try@2.2.0
│ │   │   └── pify@4.0.1 deduped
│ │   ├─┬ read-pkg-up@5.0.0
│ │   │ ├── find-up@3.0.0 deduped
│ │   │ └─┬ read-pkg@5.2.0
│ │   │   ├── @types/normalize-package-data@2.4.0
│ │   │   ├─┬ normalize-package-data@2.5.0
│ │   │   │ ├── hosted-git-info@2.8.8
│ │   │   │ ├── resolve@1.17.0 deduped
│ │   │   │ ├── semver@5.7.1 deduped
│ │   │   │ └─┬ validate-npm-package-license@3.0.4
│ │   │   │   ├─┬ spdx-correct@3.1.1
│ │   │   │   │ ├── spdx-expression-parse@3.0.1 deduped
│ │   │   │   │ └── spdx-license-ids@3.0.6
│ │   │   │   └─┬ spdx-expression-parse@3.0.1
│ │   │   │     ├── spdx-exceptions@2.3.0
│ │   │   │     └── spdx-license-ids@3.0.6 deduped
│ │   │   ├─┬ parse-json@5.1.0
│ │   │   │ ├── @babel/code-frame@7.10.4 deduped
│ │   │   │ ├─┬ error-ex@1.3.2
│ │   │   │ │ └── is-arrayish@0.2.1
│ │   │   │ ├── json-parse-even-better-errors@2.3.1
│ │   │   │ └── lines-and-columns@1.1.6
│ │   │   └── type-fest@0.6.0 extraneous
│ │   ├─┬ rimraf@2.6.3
│ │   │ └── glob@7.1.6 deduped
│ │   ├── run-async@2.4.1
│ │   ├─┬ shelljs@0.8.4
│ │   │ ├── glob@7.1.6 deduped
│ │   │ ├── interpret@1.4.0 extraneous
│ │   │ └── rechoir@0.6.2 extraneous
│ │   ├── text-table@0.2.0
│ │   ├─┬ through2@3.0.2
│ │   │ ├── inherits@2.0.4
│ │   │ └─┬ readable-stream@3.6.0
│ │   │   ├── inherits@2.0.4 deduped
│ │   │   ├─┬ string_decoder@1.3.0
│ │   │   │ └── safe-buffer@5.2.1 extraneous
│ │   │   └── util-deprecate@1.0.2
│ │   └── yeoman-environment@2.8.1 deduped
│ ├─┬ @webpack-cli/utils@1.0.1-rc.0
│ │ ├── @webpack-cli/package-utils@1.0.1-rc.0 deduped
│ │ ├── colorette@1.2.1 deduped
│ │ ├── execa@4.0.3 deduped
│ │ ├─┬ findup-sync@4.0.0
│ │ │ ├── detect-file@1.0.0
│ │ │ ├─┬ is-glob@4.0.1
│ │ │ │ └── is-extglob@2.1.1
│ │ │ ├─┬ micromatch@4.0.2
│ │ │ │ ├─┬ braces@3.0.2
│ │ │ │ │ └─┬ fill-range@7.0.1
│ │ │ │ │   └─┬ to-regex-range@5.0.1
│ │ │ │ │     └── is-number@7.0.0
│ │ │ │ └── picomatch@2.2.2
│ │ │ └─┬ resolve-dir@1.0.1
│ │ │   ├─┬ expand-tilde@2.0.2
│ │ │   │ └─┬ homedir-polyfill@1.0.3
│ │ │   │   └── parse-passwd@1.0.0
│ │ │   └─┬ global-modules@1.0.0
│ │ │     ├─┬ global-prefix@1.0.2
│ │ │     │ ├── expand-tilde@2.0.2 deduped
│ │ │     │ ├── homedir-polyfill@1.0.3 deduped
│ │ │     │ ├── ini@1.3.5 deduped
│ │ │     │ ├── is-windows@1.0.2 deduped
│ │ │     │ └─┬ which@1.3.1
│ │ │     │   └── isexe@2.0.0 deduped
│ │ │     ├── is-windows@1.0.2
│ │ │     └── resolve-dir@1.0.1 deduped
│ │ ├─┬ got@10.7.0
│ │ │ ├── @sindresorhus/is@2.1.1
│ │ │ ├─┬ @szmarczak/http-timer@4.0.5
│ │ │ │ └── defer-to-connect@2.0.0
│ │ │ ├─┬ @types/cacheable-request@6.0.1
│ │ │ │ ├── @types/http-cache-semantics@4.0.0
│ │ │ │ ├─┬ @types/keyv@3.1.1
│ │ │ │ │ └── @types/node@14.11.2 deduped
│ │ │ │ ├── @types/node@14.11.2
│ │ │ │ └─┬ @types/responselike@1.0.0
│ │ │ │   └── @types/node@14.11.2 deduped
│ │ │ ├─┬ cacheable-lookup@2.0.1
│ │ │ │ ├── @types/keyv@3.1.1 deduped
│ │ │ │ └─┬ keyv@4.0.3
│ │ │ │   └── json-buffer@3.0.1
│ │ │ ├─┬ cacheable-request@7.0.1
│ │ │ │ ├─┬ clone-response@1.0.2
│ │ │ │ │ └── mimic-response@1.0.1 extraneous
│ │ │ │ ├── get-stream@5.2.0 deduped
│ │ │ │ ├── http-cache-semantics@4.1.0
│ │ │ │ ├── keyv@4.0.3 deduped
│ │ │ │ ├── lowercase-keys@2.0.0 deduped
│ │ │ │ ├── normalize-url@4.5.0
│ │ │ │ └── responselike@2.0.0 deduped
│ │ │ ├─┬ decompress-response@5.0.0
│ │ │ │ └── mimic-response@2.1.0 deduped
│ │ │ ├── duplexer3@0.1.4
│ │ │ ├── get-stream@5.2.0 deduped
│ │ │ ├── lowercase-keys@2.0.0
│ │ │ ├── mimic-response@2.1.0
│ │ │ ├── p-cancelable@2.0.0
│ │ │ ├─┬ p-event@4.2.0
│ │ │ │ └─┬ p-timeout@3.2.0
│ │ │ │   └── p-finally@1.0.0 deduped
│ │ │ ├─┬ responselike@2.0.0
│ │ │ │ └── lowercase-keys@2.0.0 deduped
│ │ │ ├── to-readable-stream@2.1.0
│ │ │ └── type-fest@0.10.0
│ │ ├── jscodeshift@0.7.0 deduped
│ │ ├── p-each-series@2.1.0 deduped
│ │ ├── prettier@1.19.1
│ │ ├─┬ yeoman-environment@2.8.1
│ │ │ ├── chalk@2.4.2 deduped
│ │ │ ├── cross-spawn@6.0.5 extraneous
│ │ │ ├── debug@3.2.6 extraneous
│ │ │ ├── diff@3.5.0
│ │ │ ├── escape-string-regexp@1.0.5 deduped
│ │ │ ├─┬ globby@8.0.2
│ │ │ │ ├─┬ array-union@1.0.2
│ │ │ │ │ └── array-uniq@1.0.3
│ │ │ │ ├─┬ dir-glob@2.0.0
│ │ │ │ │ ├── arrify@1.0.1
│ │ │ │ │ └─┬ path-type@3.0.0
│ │ │ │ │   └── pify@3.0.0 extraneous
│ │ │ │ ├─┬ fast-glob@2.2.7
│ │ │ │ │ ├─┬ @mrmlnc/readdir-enhanced@2.2.1
│ │ │ │ │ │ ├── call-me-maybe@1.0.1
│ │ │ │ │ │ └── glob-to-regexp@0.3.0
│ │ │ │ │ ├── @nodelib/fs.stat@1.1.3
│ │ │ │ │ ├─┬ glob-parent@3.1.0
│ │ │ │ │ │ ├── is-glob@3.1.0 extraneous
│ │ │ │ │ │ └── path-dirname@1.0.2
│ │ │ │ │ ├── is-glob@4.0.1 deduped
│ │ │ │ │ ├── merge2@1.4.1
│ │ │ │ │ └── micromatch@3.1.10 extraneous
│ │ │ │ ├── glob@7.1.6 deduped
│ │ │ │ ├── ignore@3.3.10
│ │ │ │ ├── pify@3.0.0 extraneous
│ │ │ │ └── slash@1.0.0
│ │ │ ├─┬ grouped-queue@1.1.0
│ │ │ │ └── lodash@4.17.19 deduped
│ │ │ ├─┬ inquirer@6.5.2
│ │ │ │ ├── ansi-escapes@3.2.0 extraneous
│ │ │ │ ├── chalk@2.4.2 deduped
│ │ │ │ ├─┬ cli-cursor@2.1.0
│ │ │ │ │ └─┬ restore-cursor@2.0.0
│ │ │ │ │   ├── onetime@2.0.1 extraneous
│ │ │ │ │   └── signal-exit@3.0.3 deduped
│ │ │ │ ├── cli-width@2.2.1
│ │ │ │ ├─┬ external-editor@3.1.0
│ │ │ │ │ ├── chardet@0.7.0
│ │ │ │ │ ├─┬ iconv-lite@0.4.24
│ │ │ │ │ │ └── safer-buffer@2.1.2
│ │ │ │ │ └─┬ tmp@0.0.33
│ │ │ │ │   └── os-tmpdir@1.0.2
│ │ │ │ ├─┬ figures@2.0.0
│ │ │ │ │ └── escape-string-regexp@1.0.5 deduped
│ │ │ │ ├── lodash@4.17.19 deduped
│ │ │ │ ├── mute-stream@0.0.7
│ │ │ │ ├── run-async@2.4.1 deduped
│ │ │ │ ├─┬ rxjs@6.6.3
│ │ │ │ │ └── tslib@1.13.0
│ │ │ │ ├─┬ string-width@2.1.1
│ │ │ │ │ ├── is-fullwidth-code-point@2.0.0
│ │ │ │ │ └── strip-ansi@4.0.0 deduped
│ │ │ │ ├── strip-ansi@5.2.0 extraneous
│ │ │ │ └── through@2.3.8
│ │ │ ├─┬ is-scoped@1.0.0
│ │ │ │ └── scoped-regex@1.0.0
│ │ │ ├── lodash@4.17.19 deduped
│ │ │ ├── log-symbols@2.2.0 extraneous
│ │ │ ├─┬ mem-fs@1.2.0
│ │ │ │ ├── through2@3.0.2 deduped
│ │ │ │ ├── vinyl@2.2.1 deduped
│ │ │ │ └─┬ vinyl-file@3.0.0
│ │ │ │   ├── graceful-fs@4.2.4 deduped
│ │ │ │   ├── pify@2.3.0 extraneous
│ │ │ │   ├─┬ strip-bom-buf@1.0.0
│ │ │ │   │ └── is-utf8@0.2.1
│ │ │ │   ├─┬ strip-bom-stream@2.0.0
│ │ │ │   │ ├─┬ first-chunk-stream@2.0.0
│ │ │ │   │ │ └── readable-stream@2.3.7 extraneous
│ │ │ │   │ └─┬ strip-bom@2.0.0
│ │ │ │   │   └── is-utf8@0.2.1 deduped
│ │ │ │   └── vinyl@2.2.1 deduped
│ │ │ ├─┬ strip-ansi@4.0.0
│ │ │ │ └── ansi-regex@3.0.0
│ │ │ ├── text-table@0.2.0 deduped
│ │ │ └── untildify@3.0.3
│ │ └── yeoman-generator@4.7.2 deduped
│ ├── colorette@1.2.1 deduped
│ ├─┬ jscodeshift@0.7.0
│ │ ├─┬ @babel/core@7.11.6
│ │ │ ├─┬ @babel/code-frame@7.10.4
│ │ │ │ └─┬ @babel/highlight@7.10.4
│ │ │ │   ├── @babel/helper-validator-identifier@7.10.4 deduped
│ │ │ │   ├── chalk@2.4.2 deduped
│ │ │ │   └── js-tokens@4.0.0
│ │ │ ├─┬ @babel/generator@7.11.6
│ │ │ │ ├── @babel/types@7.11.5 deduped
│ │ │ │ ├── jsesc@2.5.2
│ │ │ │ └── source-map@0.5.7 deduped
│ │ │ ├─┬ @babel/helper-module-transforms@7.11.0
│ │ │ │ ├── @babel/helper-module-imports@7.10.4 deduped
│ │ │ │ ├─┬ @babel/helper-replace-supers@7.10.4
│ │ │ │ │ ├── @babel/helper-member-expression-to-functions@7.11.0 deduped
│ │ │ │ │ ├── @babel/helper-optimise-call-expression@7.10.4 deduped
│ │ │ │ │ ├── @babel/traverse@7.11.5 deduped
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ ├─┬ @babel/helper-simple-access@7.10.4
│ │ │ │ │ ├── @babel/template@7.10.4 deduped
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ ├─┬ @babel/helper-split-export-declaration@7.11.0
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ ├── @babel/template@7.10.4 deduped
│ │ │ │ ├── @babel/types@7.11.5 deduped
│ │ │ │ └── lodash@4.17.19 deduped
│ │ │ ├─┬ @babel/helpers@7.10.4
│ │ │ │ ├── @babel/template@7.10.4 deduped
│ │ │ │ ├── @babel/traverse@7.11.5 deduped
│ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ ├── @babel/parser@7.11.5 deduped
│ │ │ ├─┬ @babel/template@7.10.4
│ │ │ │ ├── @babel/code-frame@7.10.4 deduped
│ │ │ │ ├── @babel/parser@7.11.5 deduped
│ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ ├─┬ @babel/traverse@7.11.5
│ │ │ │ ├── @babel/code-frame@7.10.4 deduped
│ │ │ │ ├── @babel/generator@7.11.6 deduped
│ │ │ │ ├─┬ @babel/helper-function-name@7.10.4
│ │ │ │ │ ├── @babel/helper-get-function-arity@7.10.4 deduped
│ │ │ │ │ ├── @babel/template@7.10.4 deduped
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ ├── @babel/helper-split-export-declaration@7.11.0 deduped
│ │ │ │ ├── @babel/parser@7.11.5 deduped
│ │ │ │ ├── @babel/types@7.11.5 deduped
│ │ │ │ ├── debug@4.2.0 deduped
│ │ │ │ ├── globals@11.12.0
│ │ │ │ └── lodash@4.17.19 deduped
│ │ │ ├─┬ @babel/types@7.11.5
│ │ │ │ ├── @babel/helper-validator-identifier@7.10.4
│ │ │ │ ├── lodash@4.17.19 deduped
│ │ │ │ └── to-fast-properties@2.0.0
│ │ │ ├─┬ convert-source-map@1.7.0
│ │ │ │ └── safe-buffer@5.1.2
│ │ │ ├── debug@4.2.0 deduped
│ │ │ ├── gensync@1.0.0-beta.1
│ │ │ ├─┬ json5@2.1.3
│ │ │ │ └── minimist@1.2.5 deduped
│ │ │ ├── lodash@4.17.19 deduped
│ │ │ ├── resolve@1.17.0 deduped
│ │ │ ├── semver@5.7.1
│ │ │ └── source-map@0.5.7
│ │ ├── @babel/parser@7.11.5
│ │ ├─┬ @babel/plugin-proposal-class-properties@7.10.4
│ │ │ ├─┬ @babel/helper-create-class-features-plugin@7.10.5
│ │ │ │ ├── @babel/helper-function-name@7.10.4 deduped
│ │ │ │ ├─┬ @babel/helper-member-expression-to-functions@7.11.0
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ ├─┬ @babel/helper-optimise-call-expression@7.10.4
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ ├── @babel/helper-replace-supers@7.10.4 deduped
│ │ │ │ └── @babel/helper-split-export-declaration@7.11.0 deduped
│ │ │ └── @babel/helper-plugin-utils@7.10.4
│ │ ├─┬ @babel/plugin-proposal-object-rest-spread@7.11.0
│ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-object-rest-spread@7.8.3
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ └─┬ @babel/plugin-transform-parameters@7.10.5
│ │ │   ├─┬ @babel/helper-get-function-arity@7.10.4
│ │ │   │ └── @babel/types@7.11.5 deduped
│ │ │   └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ ├─┬ @babel/preset-env@7.11.5
│ │ │ ├─┬ @babel/compat-data@7.11.0
│ │ │ │ ├── browserslist@4.14.4 deduped
│ │ │ │ ├── invariant@2.2.4 deduped
│ │ │ │ └── semver@5.7.1 deduped
│ │ │ ├─┬ @babel/helper-compilation-targets@7.10.4
│ │ │ │ ├── @babel/compat-data@7.11.0 deduped
│ │ │ │ ├── browserslist@4.14.4 deduped
│ │ │ │ ├── invariant@2.2.4 deduped
│ │ │ │ ├── levenary@1.1.1 deduped
│ │ │ │ └── semver@5.7.1 deduped
│ │ │ ├─┬ @babel/helper-module-imports@7.10.4
│ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-proposal-async-generator-functions@7.10.5
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ ├─┬ @babel/helper-remap-async-to-generator@7.11.4
│ │ │ │ │ ├── @babel/helper-annotate-as-pure@7.10.4 deduped
│ │ │ │ │ ├─┬ @babel/helper-wrap-function@7.10.4
│ │ │ │ │ │ ├── @babel/helper-function-name@7.10.4 deduped
│ │ │ │ │ │ ├── @babel/template@7.10.4 deduped
│ │ │ │ │ │ ├── @babel/traverse@7.11.5 deduped
│ │ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ │ ├── @babel/template@7.10.4 deduped
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ └── @babel/plugin-syntax-async-generators@7.8.4 deduped
│ │ │ ├── @babel/plugin-proposal-class-properties@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-proposal-dynamic-import@7.10.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/plugin-syntax-dynamic-import@7.8.3 deduped
│ │ │ ├─┬ @babel/plugin-proposal-export-namespace-from@7.10.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/plugin-syntax-export-namespace-from@7.8.3 deduped
│ │ │ ├─┬ @babel/plugin-proposal-json-strings@7.10.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/plugin-syntax-json-strings@7.8.3 deduped
│ │ │ ├─┬ @babel/plugin-proposal-logical-assignment-operators@7.11.0
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/plugin-syntax-logical-assignment-operators@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-proposal-nullish-coalescing-operator@7.10.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/plugin-syntax-nullish-coalescing-operator@7.8.3 deduped
│ │ │ ├─┬ @babel/plugin-proposal-numeric-separator@7.10.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/plugin-syntax-numeric-separator@7.10.4 deduped
│ │ │ ├── @babel/plugin-proposal-object-rest-spread@7.11.0 deduped
│ │ │ ├─┬ @babel/plugin-proposal-optional-catch-binding@7.10.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/plugin-syntax-optional-catch-binding@7.8.3 deduped
│ │ │ ├─┬ @babel/plugin-proposal-optional-chaining@7.11.0
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ ├─┬ @babel/helper-skip-transparent-expression-wrappers@7.11.0
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ └── @babel/plugin-syntax-optional-chaining@7.8.3 deduped
│ │ │ ├─┬ @babel/plugin-proposal-private-methods@7.10.4
│ │ │ │ ├── @babel/helper-create-class-features-plugin@7.10.5 deduped
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-proposal-unicode-property-regex@7.10.4
│ │ │ │ ├─┬ @babel/helper-create-regexp-features-plugin@7.10.4
│ │ │ │ │ ├── @babel/helper-annotate-as-pure@7.10.4 deduped
│ │ │ │ │ ├── @babel/helper-regex@7.10.5 deduped
│ │ │ │ │ └─┬ regexpu-core@4.7.1
│ │ │ │ │   ├── regenerate@1.4.1
│ │ │ │ │   ├─┬ regenerate-unicode-properties@8.2.0
│ │ │ │ │   │ └── regenerate@1.4.1 deduped
│ │ │ │ │   ├── regjsgen@0.5.2
│ │ │ │ │   ├─┬ regjsparser@0.6.4
│ │ │ │ │   │ └── jsesc@0.5.0 extraneous
│ │ │ │ │   ├─┬ unicode-match-property-ecmascript@1.0.4
│ │ │ │ │   │ ├── unicode-canonical-property-names-ecmascript@1.0.4
│ │ │ │ │   │ └── unicode-property-aliases-ecmascript@1.1.0
│ │ │ │ │   └── unicode-match-property-value-ecmascript@1.2.0
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-async-generators@7.8.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-class-properties@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-dynamic-import@7.8.3
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-export-namespace-from@7.8.3
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-json-strings@7.8.3
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-logical-assignment-operators@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-nullish-coalescing-operator@7.8.3
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-numeric-separator@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├── @babel/plugin-syntax-object-rest-spread@7.8.3 deduped
│ │ │ ├─┬ @babel/plugin-syntax-optional-catch-binding@7.8.3
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-optional-chaining@7.8.3
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-syntax-top-level-await@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-arrow-functions@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-async-to-generator@7.10.4
│ │ │ │ ├── @babel/helper-module-imports@7.10.4 deduped
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/helper-remap-async-to-generator@7.11.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-block-scoped-functions@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-block-scoping@7.11.1
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-classes@7.10.4
│ │ │ │ ├─┬ @babel/helper-annotate-as-pure@7.10.4
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ ├─┬ @babel/helper-define-map@7.10.5
│ │ │ │ │ ├── @babel/helper-function-name@7.10.4 deduped
│ │ │ │ │ ├── @babel/types@7.11.5 deduped
│ │ │ │ │ └── lodash@4.17.19 deduped
│ │ │ │ ├── @babel/helper-function-name@7.10.4 deduped
│ │ │ │ ├── @babel/helper-optimise-call-expression@7.10.4 deduped
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ ├── @babel/helper-replace-supers@7.10.4 deduped
│ │ │ │ ├── @babel/helper-split-export-declaration@7.11.0 deduped
│ │ │ │ └── globals@11.12.0 deduped
│ │ │ ├─┬ @babel/plugin-transform-computed-properties@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-destructuring@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-dotall-regex@7.10.4
│ │ │ │ ├── @babel/helper-create-regexp-features-plugin@7.10.4 deduped
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-duplicate-keys@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-exponentiation-operator@7.10.4
│ │ │ │ ├─┬ @babel/helper-builder-binary-assignment-operator-visitor@7.10.4
│ │ │ │ │ ├─┬ @babel/helper-explode-assignable-expression@7.11.4
│ │ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-for-of@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-function-name@7.10.4
│ │ │ │ ├── @babel/helper-function-name@7.10.4 deduped
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-literals@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-member-expression-literals@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-modules-amd@7.10.5
│ │ │ │ ├── @babel/helper-module-transforms@7.11.0 deduped
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └─┬ babel-plugin-dynamic-import-node@2.3.3
│ │ │ │   └─┬ object.assign@4.1.1
│ │ │ │     ├─┬ define-properties@1.1.3
│ │ │ │     │ └── object-keys@1.1.1 deduped
│ │ │ │     ├─┬ es-abstract@1.18.0-next.0
│ │ │ │     │ ├─┬ es-to-primitive@1.2.1
│ │ │ │     │ │ ├── is-callable@1.2.2 deduped
│ │ │ │     │ │ ├── is-date-object@1.0.2
│ │ │ │     │ │ └─┬ is-symbol@1.0.3
│ │ │ │     │ │   └── has-symbols@1.0.1 deduped
│ │ │ │     │ ├── function-bind@1.1.1
│ │ │ │     │ ├─┬ has@1.0.3
│ │ │ │     │ │ └── function-bind@1.1.1 deduped
│ │ │ │     │ ├── has-symbols@1.0.1 deduped
│ │ │ │     │ ├── is-callable@1.2.2
│ │ │ │     │ ├── is-negative-zero@2.0.0
│ │ │ │     │ ├─┬ is-regex@1.1.1
│ │ │ │     │ │ └── has-symbols@1.0.1 deduped
│ │ │ │     │ ├── object-inspect@1.8.0
│ │ │ │     │ ├── object-keys@1.1.1 deduped
│ │ │ │     │ ├── object.assign@4.1.1 deduped
│ │ │ │     │ ├─┬ string.prototype.trimend@1.0.1
│ │ │ │     │ │ ├── define-properties@1.1.3 deduped
│ │ │ │     │ │ └─┬ es-abstract@1.17.6
│ │ │ │     │ │   ├── es-to-primitive@1.2.1 deduped
│ │ │ │     │ │   ├── function-bind@1.1.1 deduped
│ │ │ │     │ │   ├── has@1.0.3 deduped
│ │ │ │     │ │   ├── has-symbols@1.0.1 deduped
│ │ │ │     │ │   ├── is-callable@1.2.2 deduped
│ │ │ │     │ │   ├── is-regex@1.1.1 deduped
│ │ │ │     │ │   ├── object-inspect@1.8.0 deduped
│ │ │ │     │ │   ├── object-keys@1.1.1 deduped
│ │ │ │     │ │   ├── object.assign@4.1.1 deduped
│ │ │ │     │ │   ├── string.prototype.trimend@1.0.1 deduped
│ │ │ │     │ │   └── string.prototype.trimstart@1.0.1 deduped
│ │ │ │     │ └─┬ string.prototype.trimstart@1.0.1
│ │ │ │     │   ├── define-properties@1.1.3 deduped
│ │ │ │     │   └─┬ es-abstract@1.17.6
│ │ │ │     │     ├── es-to-primitive@1.2.1 deduped
│ │ │ │     │     ├── function-bind@1.1.1 deduped
│ │ │ │     │     ├── has@1.0.3 deduped
│ │ │ │     │     ├── has-symbols@1.0.1 deduped
│ │ │ │     │     ├── is-callable@1.2.2 deduped
│ │ │ │     │     ├── is-regex@1.1.1 deduped
│ │ │ │     │     ├── object-inspect@1.8.0 deduped
│ │ │ │     │     ├── object-keys@1.1.1 deduped
│ │ │ │     │     ├── object.assign@4.1.1 deduped
│ │ │ │     │     ├── string.prototype.trimend@1.0.1 deduped
│ │ │ │     │     └── string.prototype.trimstart@1.0.1 deduped
│ │ │ │     ├── has-symbols@1.0.1
│ │ │ │     └── object-keys@1.1.1
│ │ │ ├─┬ @babel/plugin-transform-modules-commonjs@7.10.4
│ │ │ │ ├── @babel/helper-module-transforms@7.11.0 deduped
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ ├── @babel/helper-simple-access@7.10.4 deduped
│ │ │ │ └── babel-plugin-dynamic-import-node@2.3.3 deduped
│ │ │ ├─┬ @babel/plugin-transform-modules-systemjs@7.10.5
│ │ │ │ ├─┬ @babel/helper-hoist-variables@7.10.4
│ │ │ │ │ └── @babel/types@7.11.5 deduped
│ │ │ │ ├── @babel/helper-module-transforms@7.11.0 deduped
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── babel-plugin-dynamic-import-node@2.3.3 deduped
│ │ │ ├─┬ @babel/plugin-transform-modules-umd@7.10.4
│ │ │ │ ├── @babel/helper-module-transforms@7.11.0 deduped
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-named-capturing-groups-regex@7.10.4
│ │ │ │ └── @babel/helper-create-regexp-features-plugin@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-new-target@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-object-super@7.10.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/helper-replace-supers@7.10.4 deduped
│ │ │ ├── @babel/plugin-transform-parameters@7.10.5 deduped
│ │ │ ├─┬ @babel/plugin-transform-property-literals@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-regenerator@7.10.4
│ │ │ │ └─┬ regenerator-transform@0.14.5
│ │ │ │   └─┬ @babel/runtime@7.11.2
│ │ │ │     └── regenerator-runtime@0.13.7
│ │ │ ├─┬ @babel/plugin-transform-reserved-words@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-shorthand-properties@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-spread@7.11.0
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └── @babel/helper-skip-transparent-expression-wrappers@7.11.0 deduped
│ │ │ ├─┬ @babel/plugin-transform-sticky-regex@7.10.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ └─┬ @babel/helper-regex@7.10.5
│ │ │ │   └── lodash@4.17.19 deduped
│ │ │ ├─┬ @babel/plugin-transform-template-literals@7.10.5
│ │ │ │ ├── @babel/helper-annotate-as-pure@7.10.4 deduped
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-typeof-symbol@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-unicode-escapes@7.10.4
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/plugin-transform-unicode-regex@7.10.4
│ │ │ │ ├── @babel/helper-create-regexp-features-plugin@7.10.4 deduped
│ │ │ │ └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ ├─┬ @babel/preset-modules@0.1.4
│ │ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ │ ├── @babel/plugin-proposal-unicode-property-regex@7.10.4 deduped
│ │ │ │ ├── @babel/plugin-transform-dotall-regex@7.10.4 deduped
│ │ │ │ ├── @babel/types@7.11.5 deduped
│ │ │ │ └── esutils@2.0.3
│ │ │ ├── @babel/types@7.11.5 deduped
│ │ │ ├─┬ browserslist@4.14.4
│ │ │ │ ├── caniuse-lite@1.0.30001135
│ │ │ │ ├── electron-to-chromium@1.3.571
│ │ │ │ ├── escalade@3.1.0
│ │ │ │ └── node-releases@1.1.61
│ │ │ ├─┬ core-js-compat@3.6.5
│ │ │ │ ├── browserslist@4.14.4 deduped
│ │ │ │ └── semver@7.0.0 extraneous
│ │ │ ├─┬ invariant@2.2.4
│ │ │ │ └─┬ loose-envify@1.4.0
│ │ │ │   └── js-tokens@4.0.0 deduped
│ │ │ ├─┬ levenary@1.1.1
│ │ │ │ └── leven@3.1.0
│ │ │ └── semver@5.7.1 deduped
│ │ ├─┬ @babel/preset-flow@7.10.4
│ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ └─┬ @babel/plugin-transform-flow-strip-types@7.10.4
│ │ │   ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │   └─┬ @babel/plugin-syntax-flow@7.10.4
│ │ │     └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ ├─┬ @babel/preset-typescript@7.10.4
│ │ │ ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │ └─┬ @babel/plugin-transform-typescript@7.11.0
│ │ │   ├── @babel/helper-create-class-features-plugin@7.10.5 deduped
│ │ │   ├── @babel/helper-plugin-utils@7.10.4 deduped
│ │ │   └─┬ @babel/plugin-syntax-typescript@7.10.4
│ │ │     └── @babel/helper-plugin-utils@7.10.4 deduped
│ │ ├─┬ @babel/register@7.11.5
│ │ │ ├─┬ find-cache-dir@2.1.0
│ │ │ │ ├── commondir@1.0.1 deduped
│ │ │ │ ├── make-dir@2.1.0 deduped
│ │ │ │ └─┬ pkg-dir@3.0.0
│ │ │ │   └── find-up@3.0.0 deduped
│ │ │ ├── lodash@4.17.19 deduped
│ │ │ ├─┬ make-dir@2.1.0
│ │ │ │ ├── pify@4.0.1 deduped
│ │ │ │ └── semver@5.7.1 deduped
│ │ │ ├─┬ pirates@4.0.1
│ │ │ │ └── node-modules-regexp@1.0.0
│ │ │ └─┬ source-map-support@0.5.19
│ │ │   ├── buffer-from@1.1.1
│ │ │   └── source-map@0.6.1 extraneous
│ │ ├── babel-core@7.0.0-bridge.0
│ │ ├── colors@1.4.0 deduped
│ │ ├── flow-parser@0.134.0
│ │ ├── graceful-fs@4.2.4
│ │ ├── micromatch@3.1.10 extraneous
│ │ ├── neo-async@2.6.2
│ │ ├─┬ node-dir@0.1.17
│ │ │ └─┬ minimatch@3.0.4
│ │ │   └─┬ brace-expansion@1.1.11
│ │ │     ├── balanced-match@1.0.0
│ │ │     └── concat-map@0.0.1
│ │ ├─┬ recast@0.18.10
│ │ │ ├── ast-types@0.13.3
│ │ │ ├── esprima@4.0.1
│ │ │ ├── private@0.1.8
│ │ │ └── source-map@0.6.1 extraneous
│ │ ├─┬ temp@0.8.4
│ │ │ └── rimraf@2.6.3 deduped
│ │ └─┬ write-file-atomic@2.4.3
│ │   ├── graceful-fs@4.2.4 deduped
│ │   ├── imurmurhash@0.1.4
│ │   └── signal-exit@3.0.3 deduped
│ ├── p-each-series@2.1.0
│ ├── UNMET PEER DEPENDENCY webpack@4.x.x || 5.x.x
│ └── UNMET PEER DEPENDENCY webpack-cli@3.x.x || 4.x.x
├─┬ @webpack-cli/package-utils@1.0.1-rc.0
│ ├── colorette@1.2.1 deduped
│ ├─┬ cross-spawn@7.0.1
│ │ ├── path-key@3.1.1
│ │ ├─┬ shebang-command@2.0.0
│ │ │ └── shebang-regex@3.0.0
│ │ └─┬ which@2.0.2
│ │   └── isexe@2.0.0
│ ├── enquirer@2.3.6 deduped
│ ├── execa@4.0.3 deduped
│ └─┬ global-modules@2.0.0
│   └─┬ global-prefix@3.0.0
│     ├── ini@1.3.5
│     ├── kind-of@6.0.3
│     └── which@1.3.1 extraneous
├── @webpack-cli/serve@1.0.1-rc.0
├─┬ ansi-escapes@4.3.1
│ └── type-fest@0.11.0 extraneous
├── colorette@1.2.1
├─┬ command-line-usage@6.1.0
│ ├── array-back@4.0.1
│ ├─┬ chalk@2.4.2
│ │ ├─┬ ansi-styles@3.2.1
│ │ │ └─┬ color-convert@1.9.3
│ │ │   └── color-name@1.1.3
│ │ ├── escape-string-regexp@1.0.5
│ │ └─┬ supports-color@5.5.0
│ │   └── has-flag@3.0.0
│ ├─┬ table-layout@1.0.1
│ │ ├── array-back@4.0.1 deduped
│ │ ├── deep-extend@0.6.0
│ │ ├── typical@5.2.0 deduped
│ │ └─┬ wordwrapjs@4.0.0
│ │   ├── reduce-flatten@2.0.0
│ │   └── typical@5.2.0 deduped
│ └── typical@5.2.0
├── commander@6.1.0
├─┬ enquirer@2.3.6
│ └── ansi-colors@4.1.1
├─┬ execa@4.0.3
│ ├── cross-spawn@7.0.1 deduped
│ ├─┬ get-stream@5.2.0
│ │ └─┬ pump@3.0.0
│ │   ├─┬ end-of-stream@1.4.4
│ │   │ └── once@1.4.0 deduped
│ │   └─┬ once@1.4.0
│ │     └── wrappy@1.0.2
│ ├── human-signals@1.1.1
│ ├── is-stream@2.0.0
│ ├── merge-stream@2.0.0
│ ├─┬ npm-run-path@4.0.1
│ │ └── path-key@3.1.1 deduped
│ ├─┬ onetime@5.1.2
│ │ └── mimic-fn@2.1.0
│ ├── signal-exit@3.0.3
│ └── strip-final-newline@2.0.0
├─┬ import-local@3.0.2
│ ├── pkg-dir@4.2.0 extraneous
│ └─┬ resolve-cwd@3.0.0
│   └── resolve-from@5.0.0
├── interpret@2.2.0
├─┬ rechoir@0.7.0
│ └─┬ resolve@1.17.0
│   └── path-parse@1.0.6
├── v8-compile-cache@2.1.1
├── UNMET PEER DEPENDENCY webpack-cli@4.x.x
└─┬ webpack-merge@4.2.2
  └── lodash@4.17.19

@mwmcode
Copy link

mwmcode commented Oct 12, 2020

Can we have the default folder name as webpack instead of .webpack?

Webpack config is an important part of any app that uses it, so we should (IMHO) use a not-dotted folder them so they're not hidden by the OS.

@alexander-akait
Copy link
Member

@mustafawm you can use any directory name and use require/import, I want to close this issue, because we done webpack-cli v4 and want to focus on fixing bugs

@dmurvihill
Copy link

--dev and --prod are nice, but since --env has been removed what do you suggest for projects that have more than two configurations (for instance, I need --staging)

@anshumanv
Copy link
Member

anshumanv commented Oct 23, 2020

Hi @dmurvihill, we added env back since it was requested by quite a lot of folks.

You can do --env environment=staging and read it in your config

const { environment } = env

if(environment === "staging") {
  return { ... }
}

@AlonMiz
Copy link

AlonMiz commented Nov 1, 2020

--dev and --prod are nice, but since --env has been removed what do you suggest for projects that have more than two configurations (for instance, I need --staging)

my suggestion is not to have staging config at all. the staging config should be prod.
i know that sounds strict but staging should be compiled the same way as prod.
in most of my use cases i've seen, this assumption can work as we can inject the ENV=staging in the runtime of the server (eg. nginx), so that we have ONE SINGLE docker image that holds our service serving those static files, both for prod and for staging. while injecting the env staging to that docker will inject env=staging to the main html, then you can use config to distinguish these envs.
having the same image for both staging/local/prod is a great advantage for consistency and testability

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests