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

[WIP] feat(css): add CSS module support (`css`) #6448

Open
wants to merge 2 commits into
base: next
from

Conversation

Projects
None yet
@michael-ciniawsky
Copy link
Member

michael-ciniawsky commented Feb 6, 2018

This PR attempts to add support for a new module type (module.type === 'css') to support CSS 'natively', replacing the need for loaders/plugins like the css-loader/mini-css-extract-plugin and eventually adding support for using CSS as an Entrypoint (if it makes sense)

import.css

.import {
  color: blue;
  background-image: url('./file.png');
}

file.css

.main {
  color: red;
}

app.js

import css from './file.css'

webpack.config.js

const config = {
  entry: {
    app: './app.js'
  },
  module: {
    rules: [
       {
           test: /\.css$/,
           type: 'css'
       },
       {
          test: /\.sss$/
          type: 'css',
          parser: {
             options: { 
                parser: require('sugarss') 
             },
             plugins: [ /* ...postcss plugins */ ]
          }
       }
    ]
  }
}
|– dist
||– app.css
||- app.js

dist/app.css

.import {
  color: blue;
  background-image: url('/43685275574.png');
}

.main {
  color: red;
}

ℹ️ This PR includes defaults for common module.rules, so normally it won't be necessary to specify module.rules for common cases (.css) like in the example above, it's sole purpose is to illustrate the concept, adding custom rules for e.g other preprocessor languages (.sass etc) + using loaders is of course supported aswell


TODO

Fix

  • Source Maps (Correctness)
  • Code Splitting
  • Hashes ([contenthash]/[hash] etc)

Feature

  • parser Options (TBD)
  • generator Options (TBD)
  • CSS Modules (TBD) [maybe as a plugin for the parser]
  • HMR (Modules (<style>) && Chunks (<link>))
  • output (webpack.config.js) Support (e.g [name].[hash].[ext])
  • preload Support
    • (url(/* webpackPreload: true */ path/to/image.png))
  • prefetch Support
    • (url(/* webpackPrefetch: true */ path/to/image.png))

Chore

  • Add Type Definitions

Test

  • Add Tests

@michael-ciniawsky michael-ciniawsky force-pushed the feature/css branch 3 times, most recently from eba4eda to 5476681 Feb 6, 2018

@TheLarkInn TheLarkInn added this to the webpack 4.x milestone Feb 6, 2018

@michael-ciniawsky michael-ciniawsky force-pushed the feature/css branch 2 times, most recently from 96dfb55 to 6ca7713 Feb 7, 2018

@montogeek montogeek referenced this pull request Feb 7, 2018

Closed

Webpack 4 compatibility #701

"loader-runner": "^2.3.0",
"loader-utils": "^1.1.0",
"memory-fs": "~0.4.1",
"mkdirp": "~0.5.0",
"node-libs-browser": "^2.0.0",
"postcss": "^6.0.16",
"postcss-value-parser": "^3.3.0",

This comment has been minimized.

@evilebottnawi

evilebottnawi Feb 7, 2018

Member

Better for use https://github.com/shellscape/postcss-values-parser, we use this package in prettier, also stylelint in near future want to switch on this, also it is package @shellscape and we can fix some problems asasp

This comment has been minimized.

@TrySound

TrySound Feb 7, 2018

@evilebottnawi You can fix some problems with value-parser too. I'm open to major releases.

This comment has been minimized.

@evilebottnawi

evilebottnawi Feb 7, 2018

Member

@TrySound I'm not against you packages, I just want to express my opinion, we have very few contributors, although these are quite vital packages for many tools, ideally I would see the merging of packages into one, if possible (maybe options for backward compatibility). This would be a great solution, also perhaps we could bring his to stable when they became part of postcss in next major release. Just my opinion. What do you think about this?

This comment has been minimized.

@TrySound

TrySound Feb 7, 2018

I'd say there's done a lot of work on this code and changing dependency just because it's nice is wasting of time. postcss just considered adding value parser out of the box. You can't be sure it will be 1:1 like postcss-values-parser and rely on it. Let's rewrite when there will be at least postcss beta or similar.

This comment has been minimized.

@michael-ciniawsky

michael-ciniawsky Feb 7, 2018

Member

Guys I just hadn't the time to finalize the local stuff I'm working on for the postcss-icss-* side of affairs, this stuff (dependencies) will be moved soon from the PR :D 😛. Happy with every postcss-value-parser that is capable of parsing @import/url() for the initial CSSParser in it's default state. css-modules will still be an opt-in either via postcss-loader or something like

{
  type: 'css/experimental',
  test: /\.css$/,
  parser: {
    plugins: [
       require('postcss-modules')(options)
    ]
  }
}

This comment has been minimized.

@michael-ciniawsky

michael-ciniawsky Feb 7, 2018

Member

The @cssm scope name is available, but that's minor important atm :)

So you suggesting to move postcss-icss-selectors,values,composes,keyframes into one repo/package, handle intermediate 'state/order' within the modules plugin itself (no messages) and let it just output the (webpack) specific dependencies (e.g export const selector = 'name-2358' etc) via result.messages ?

This comment has been minimized.

@TrySound

TrySound Feb 7, 2018

Yep. Because maintaining dependent stuff with different order is shooting into feet.

This comment has been minimized.

@michael-ciniawsky

michael-ciniawsky Feb 7, 2018

Member

Should we do it in postcss-icss-selectors ? (rename, move the other plugins in there) and discuss the rest there then ? I get my things sorted and open an PR :)

postcss-icss-{url, import} also into one package? I would personally say yes and did it for HTML (https://github.com/posthtml/esm) :). It's webpack/bundler specific stuff anyways (more for internal usage (helpers))

This comment has been minimized.

@TrySound

TrySound Feb 7, 2018

Yeah. I think it would be even better. A trend of "big" packages became popular again :)

This comment has been minimized.

@michael-ciniawsky

michael-ciniawsky Feb 7, 2018

Member

Please not anything 'monorepo-ish' if avoidable :D, maybe for @cssm/modules, but a lib/ with a few files and a index.js also does the job and is idiot proofen 😂

BTW anyone interested can try this branch out now here => https://github.com/michael-ciniawsky/webpack-css-modules (Pulls this PR from github with a small boilerplate test setup to tinker around :))

@ZauberNerd ZauberNerd referenced this pull request Feb 12, 2018

Closed

WIP: Webpack v4 #354

7 of 7 tasks complete

@sokra sokra changed the base branch from next to master Feb 13, 2018

@sokra sokra removed the PR: next label Feb 13, 2018

@michael-ciniawsky michael-ciniawsky force-pushed the feature/css branch from 6ca7713 to 0845acf Mar 3, 2018

@michael-ciniawsky michael-ciniawsky force-pushed the feature/css branch 3 times, most recently from c0bb54c to 9901de7 Mar 4, 2018

);
};

// const composeAliases = (aliases, messages) =>

This comment was marked as resolved.

@jonathantneal

jonathantneal Mar 8, 2018

Should this still be here if it’s commented out?

This comment was marked as outdated.

@michael-ciniawsky

michael-ciniawsky Mar 8, 2018

Member

The whole plugins folder will be removed soon and upstreamed to css-modules instead, so the postcss plugins for @import, url() and CSS Modules will be separate packages

This comment was marked as outdated.

@michael-ciniawsky

michael-ciniawsky Mar 8, 2018

Member

No it shouldn't :)

@MatTheCat

This comment was marked as spam.

Copy link

MatTheCat commented Apr 5, 2018

@michael-ciniawsky do you have an idea when this will be usable? Can't wait to ditch my useless JS files 🤓

@glen-84 glen-84 referenced this pull request Apr 12, 2018

Closed

[path] placeholder #92

@hrasoa

This comment was marked as spam.

Copy link

hrasoa commented Apr 25, 2018

Hey, what is the progress of this PR ?

@webpack-bot

This comment has been minimized.

Copy link

webpack-bot commented May 16, 2018

For maintainers only:

  • This need to be documented (issue in webpack/webpack.js.org will be filed when merged)
@red1

This comment was marked as spam.

Copy link

red1 commented May 28, 2018

Hello,
This feature seems very promising!
Do you know when we can expect this PR to be corrected and merged ?

@sokra sokra modified the milestones: webpack 4.x, webpack 5 Jun 21, 2018

@michael-ciniawsky michael-ciniawsky force-pushed the feature/css branch from 9901de7 to 3814f90 Sep 24, 2018

@michael-ciniawsky michael-ciniawsky changed the base branch from master to next Sep 25, 2018

@michael-ciniawsky michael-ciniawsky changed the title [WIP] feat(css): add CSS module support (`css/experimental`) [WIP] feat(css): add CSS module support (`css`) Sep 25, 2018

@michael-ciniawsky michael-ciniawsky force-pushed the feature/css branch from 3814f90 to 937a5df Sep 25, 2018

@michael-ciniawsky michael-ciniawsky force-pushed the feature/css branch from 937a5df to 61391e2 Sep 25, 2018

@webpack-bot

This comment has been minimized.

Copy link

webpack-bot commented Sep 25, 2018

The basic integration tests failed.

@michael-ciniawsky Please review the following output log for errors:

    at Set.set.(anonymous function) [as reduce] (/home/travis/build/webpack/webpack/lib/util/deprecation.js:72:4)
    at TerserPlugin.optimizeFn (/home/travis/build/webpack/webpack/node_modules/terser-webpack-plugin/dist/index.js:164:14)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/home/travis/build/webpack/webpack/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:7:1)
    at AsyncSeriesHook.lazyCompileHook (/home/travis/build/webpack/webpack/node_modules/tapable/lib/Hook.js:154:20)
    at hooks.additionalAssets.callAsync.err (/home/travis/build/webpack/webpack/lib/Compilation.js:1085:36)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/home/travis/build/webpack/webpack/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook (/home/travis/build/webpack/webpack/node_modules/tapable/lib/Hook.js:154:20)
    at hooks.optimizeTree.callAsync.err (/home/travis/build/webpack/webpack/lib/Compilation.js:1081:32)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/home/travis/build/webpack/webpack/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook (/home/travis/build/webpack/webpack/node_modules/tapable/lib/Hook.js:154:20)
FAIL test/TestCasesNormal.test.js (14.037s)
  ● TestCases › normal › loaders › css-loader › css-loader should compile

    Errors while compiling:

    ./loaders/_css/stylesheet.css ((webpack)/node_modules/css-loader!./loaders/_css/stylesheet.css)
    Module parse failed: /home/travis/build/webpack/webpack/test/cases/loaders/_css/stylesheet.css:1:1: Unknown word
    You may need an appropriate loader to handle this file type.
    CssSyntaxError: /home/travis/build/webpack/webpack/test/cases/loaders/_css/stylesheet.css:1:1: Unknown word

    > 1 | exports = module.exports = require("../../../../node_modules/css-loader/lib/css-base.js")(false);
        | ^
      2 | // imports
      3 | exports.i(require("-!../../../../node_modules/css-loader/index.js!./folder/stylesheet-import1.css"), "");

      47 | 
      48 | 		postcss(plugins)
    > 49 | 			.process(source, options)
         | 			 ^
      50 | 			.then(({ root, css, map, messages }) => {
      51 | 				state.module._ast = root;
      52 | 				state.module._source = map

      at Input.error (node_modules/postcss/lib/input.js:124:16)
      at Parser.unknownWord (node_modules/postcss/lib/parser.js:504:22)
      at Parser.other (node_modules/postcss/lib/parser.js:169:12)
      at Parser.parse (node_modules/postcss/lib/parser.js:83:16)
      at parse (node_modules/postcss/lib/parse.js:19:12)
      at new LazyResult (node_modules/postcss/lib/lazy-result.js:70:16)
      at Processor.<anonymous> (node_modules/postcss/lib/processor.js:137:12)
      at Processor.process (node_modules/postcss/lib/processor.js:119:23)
      at CSSParser.parse (lib/css/CSSParser.js:49:5)
      at doBuild.err (lib/NormalModule.js:476:32)
      at runLoaders (lib/NormalModule.js:348:12)
      at node_modules/loader-runner/lib/LoaderRunner.js:370:3
      at iterateNormalLoaders (node_modules/loader-runner/lib/LoaderRunner.js:211:10)
      at iterateNormalLoaders (node_modules/loader-runner/lib/LoaderRunner.js:218:10)
      at node_modules/loader-runner/lib/LoaderRunner.js:233:3
      at context.callback (node_modules/loader-runner/lib/LoaderRunner.js:111:13)
      at Object.<anonymous> (node_modules/css-loader/lib/loader.js:135:3)
      at node_modules/css-loader/lib/processCss.js:213:3
       @ ./loaders/css-loader/index.js 3:9-54 6:9-54 9:9-54
      at checkArrayExpectation (test/checkArrayExpectation.js:76:5)
      at webpack (test/TestCases.template.js:188:12)
      at finalCallback (lib/Compiler.js:153:39)
      at hooks.done.callAsync.err (lib/Compiler.js:202:14)
      at AsyncSeriesHook.eval [as callAsync] (<anonymous>:6:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at emitRecords.err (lib/Compiler.js:200:22)
      at Compiler.emitRecords (lib/Compiler.js:315:39)
      at emitAssets.err (lib/Compiler.js:194:10)
      at hooks.afterEmit.callAsync.err (lib/Compiler.js:301:14)
      at AsyncSeriesHook.eval [as callAsync] (<anonymous>:15:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at asyncLib.forEach.err (lib/Compiler.js:298:27)
      at done (node_modules/neo-async/async.js:2854:11)
      at node_modules/neo-async/async.js:2805:7
      at node_modules/graceful-fs/graceful-fs.js:43:10
      at node_modules/graceful-fs/graceful-fs.js:43:10
Show remaining errors
  ● TestCases › normal › parsing › bom › bom should compile

    Errors while compiling:

    ./parsing/bom/bomfile.css ((webpack)/node_modules/css-loader!./parsing/bom/bomfile.css)
    Module parse failed: /home/travis/build/webpack/webpack/test/cases/parsing/bom/bomfile.css:1:1: Unknown word
    You may need an appropriate loader to handle this file type.
    CssSyntaxError: /home/travis/build/webpack/webpack/test/cases/parsing/bom/bomfile.css:1:1: Unknown word

    > 1 | exports = module.exports = require("../../../../node_modules/css-loader/lib/css-base.js")(false);
        | ^
      2 | // imports
      3 | 

      47 | 
      48 | 		postcss(plugins)
    > 49 | 			.process(source, options)
         | 			 ^
      50 | 			.then(({ root, css, map, messages }) => {
      51 | 				state.module._ast = root;
      52 | 				state.module._source = map

      at Input.error (node_modules/postcss/lib/input.js:124:16)
      at Parser.unknownWord (node_modules/postcss/lib/parser.js:504:22)
      at Parser.other (node_modules/postcss/lib/parser.js:169:12)
      at Parser.parse (node_modules/postcss/lib/parser.js:83:16)
      at parse (node_modules/postcss/lib/parse.js:19:12)
      at new LazyResult (node_modules/postcss/lib/lazy-result.js:70:16)
      at Processor.<anonymous> (node_modules/postcss/lib/processor.js:137:12)
      at Processor.process (node_modules/postcss/lib/processor.js:119:23)
      at CSSParser.parse (lib/css/CSSParser.js:49:5)
      at doBuild.err (lib/NormalModule.js:476:32)
      at runLoaders (lib/NormalModule.js:348:12)
      at node_modules/loader-runner/lib/LoaderRunner.js:370:3
      at iterateNormalLoaders (node_modules/loader-runner/lib/LoaderRunner.js:211:10)
      at iterateNormalLoaders (node_modules/loader-runner/lib/LoaderRunner.js:218:10)
      at node_modules/loader-runner/lib/LoaderRunner.js:233:3
      at context.callback (node_modules/loader-runner/lib/LoaderRunner.js:111:13)
      at Object.<anonymous> (node_modules/css-loader/lib/loader.js:135:3)
      at node_modules/css-loader/lib/processCss.js:213:3
       @ ./parsing/bom/index.js 7:11-47
      at checkArrayExpectation (test/checkArrayExpectation.js:76:5)
      at webpack (test/TestCases.template.js:188:12)
      at finalCallback (lib/Compiler.js:153:39)
      at hooks.done.callAsync.err (lib/Compiler.js:202:14)
      at AsyncSeriesHook.eval [as callAsync] (<anonymous>:6:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at emitRecords.err (lib/Compiler.js:200:22)
      at Compiler.emitRecords (lib/Compiler.js:315:39)
      at emitAssets.err (lib/Compiler.js:194:10)
      at hooks.afterEmit.callAsync.err (lib/Compiler.js:301:14)
      at AsyncSeriesHook.eval [as callAsync] (<anonymous>:15:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at asyncLib.forEach.err (lib/Compiler.js:298:27)
      at done (node_modules/neo-async/async.js:2854:11)
      at node_modules/neo-async/async.js:2805:7
      at node_modules/graceful-fs/graceful-fs.js:43:10
      at node_modules/graceful-fs/graceful-fs.js:43:10

    at Set.set.(anonymous function) [as reduce] (/home/travis/build/webpack/webpack/lib/util/deprecation.js:72:4)
    at TerserPlugin.optimizeFn (/home/travis/build/webpack/webpack/node_modules/terser-webpack-plugin/dist/index.js:164:14)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/home/travis/build/webpack/webpack/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:7:1)
    at AsyncSeriesHook.lazyCompileHook (/home/travis/build/webpack/webpack/node_modules/tapable/lib/Hook.js:154:20)
    at hooks.additionalAssets.callAsync.err (/home/travis/build/webpack/webpack/lib/Compilation.js:1085:36)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/home/travis/build/webpack/webpack/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook (/home/travis/build/webpack/webpack/node_modules/tapable/lib/Hook.js:154:20)
    at hooks.optimizeTree.callAsync.err (/home/travis/build/webpack/webpack/lib/Compilation.js:1081:32)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (/home/travis/build/webpack/webpack/node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook (/home/travis/build/webpack/webpack/node_modules/tapable/lib/Hook.js:154:20)
FAIL test/ConfigTestCases.test.js (16.691s)
  ● ConfigTestCases › split-chunks › runtime-chunk-no-async › runtime-chunk-no-async should compile

    No tests exported by test case

      258 | 										);
      259 | 									if (getNumberOfTests() < filesCount)
    > 260 | 										return done(new Error("No tests exported by test case"));
          | 										            ^
      261 | 									if (testConfig.afterExecute) testConfig.afterExecute();
      262 | 									done();
      263 | 								});

      at webpack (test/ConfigTestCases.test.js:260:23)
      at finalCallback (lib/Compiler.js:153:39)
      at hooks.done.callAsync.err (lib/Compiler.js:202:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:6:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at emitRecords.err (lib/Compiler.js:200:22)
      at Compiler.emitRecords (lib/Compiler.js:315:39)
      at emitAssets.err (lib/Compiler.js:194:10)
      at hooks.afterEmit.callAsync.err (lib/Compiler.js:301:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:15:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at asyncLib.forEach.err (lib/Compiler.js:298:27)
      at done (node_modules/neo-async/async.js:2854:11)
      at node_modules/neo-async/async.js:2805:7
      at node_modules/graceful-fs/graceful-fs.js:43:10
      at node_modules/graceful-fs/graceful-fs.js:43:10

FAIL test/StatsTestCases.test.js (6.2s)
  ● StatsTestCases › should print correct stats for async-commons-chunk-auto

    expect(value).toMatchSnapshot()

    Received value does not match stored snapshot "StatsTestCases should print correct stats for async-commons-chunk-auto 1".

    - Snapshot
    + Received

      "Child disabled:
    -     Entrypoint main = disabled/main.js
    -     Entrypoint a = disabled/a.js
    -     Entrypoint b = disabled/b.js
    -     Entrypoint c = disabled/c.js
    -     chunk    {0} disabled/main.js (main) 147 bytes >{2}< >{4}< >{6}< [entry] [rendered]
    +     Entrypoint main = disabled/main.js main.css
    +     Entrypoint a = disabled/a.js a.css
    +     Entrypoint b = disabled/b.js b.css
    +     Entrypoint c = disabled/c.js c.css
    +     chunk    {0} disabled/main.js, main.css (main) 147 bytes >{2}< >{4}< >{6}< [entry] [rendered]
              > ./ main
           [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} disabled/a.js (a) 216 bytes >{7}< [entry] [rendered]
    +     chunk    {1} disabled/a.js, a.css (a) 216 bytes >{7}< [entry] [rendered]
              > ./a a
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [4] ./node_modules/y.js 20 bytes {1} {2} {3} {4} [built]
    -     chunk    {2} disabled/async-a.js (async-a) 216 bytes <{0}> >{7}< [rendered]
    +     chunk    {2} disabled/async-a.js, async-a.css (async-a) 216 bytes <{0}> >{7}< [rendered]
              > ./a [0] ./index.js 1:0-47
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [4] ./node_modules/y.js 20 bytes {1} {2} {3} {4} [built]
    -     chunk    {3} disabled/b.js (b) 152 bytes [entry] [rendered]
    +     chunk    {3} disabled/b.js, b.css (b) 152 bytes [entry] [rendered]
              > ./b b
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [4] ./node_modules/y.js 20 bytes {1} {2} {3} {4} [built]
           [5] ./b.js 72 bytes {3} {4} [built]
           [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
    -     chunk    {4} disabled/async-b.js (async-b) 152 bytes <{0}> [rendered]
    +     chunk    {4} disabled/async-b.js, async-b.css (async-b) 152 bytes <{0}> [rendered]
              > ./b [0] ./index.js 2:0-47
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [4] ./node_modules/y.js 20 bytes {1} {2} {3} {4} [built]
           [5] ./b.js 72 bytes {3} {4} [built]
           [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
    -     chunk    {5} disabled/c.js (c) 167 bytes [entry] [rendered]
    +     chunk    {5} disabled/c.js, c.css (c) 167 bytes [entry] [rendered]
              > ./c c
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
           [7] ./c.js + 1 modules 107 bytes {5} {6} [built]
               | ./node_modules/z.js 20 bytes [built]
               | ./c.js 72 bytes [built]
    -     chunk    {6} disabled/async-c.js (async-c) 167 bytes <{0}> [rendered]
    +     chunk    {6} disabled/async-c.js, async-c.css (async-c) 167 bytes <{0}> [rendered]
              > ./c [0] ./index.js 3:0-47
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
           [7] ./c.js + 1 modules 107 bytes {5} {6} [built]
               | ./node_modules/z.js 20 bytes [built]
               | ./c.js 72 bytes [built]
    -     chunk    {7} disabled/async-g.js (async-g) 54 bytes <{1}> <{2}> [rendered]
    +     chunk    {7} disabled/async-g.js, async-g.css (async-g) 54 bytes <{1}> <{2}> [rendered]
              > ./g [] 6:0-47
              > ./g [] 6:0-47
           [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
           [8] ./g.js 34 bytes {7} [built]
      Child default:
    -     Entrypoint main = default/main.js
    -     Entrypoint a = default/a.js
    -     Entrypoint b = default/b.js
    -     Entrypoint c = default/c.js
    -     chunk    {0} default/main.js (main) 147 bytes >{1}< >{3}< >{6}< >{7}< >{8}< >{9}< >{10}< >{11}< [entry] [rendered]
    +     Entrypoint main = default/main.js main.css
    +     Entrypoint a = default/a.js a.css
    +     Entrypoint b = default/b.js b.css
    +     Entrypoint c = default/c.js c.css
    +     chunk    {0} default/main.js, main.css (main) 147 bytes >{1}< >{3}< >{6}< >{7}< >{8}< >{9}< >{10}< >{11}< [entry] [rendered]
              > ./ main
           [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} default/async-a.js (async-a) 156 bytes <{0}> ={3}= ={6}= ={7}= >{9}< >{12}< [rendered]
    +     chunk    {1} default/async-a.js, async-a.css (async-a) 156 bytes <{0}> ={3}= ={6}= ={7}= >{9}< >{12}< [rendered]
              > ./a [0] ./index.js 1:0-47
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
    -     chunk    {2} default/a.js (a) 216 bytes >{9}< >{12}< [entry] [rendered]
    +     chunk    {2} default/a.js, a.css (a) 216 bytes >{9}< >{12}< [entry] [rendered]
              > ./a a
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
           [2] ./d.js 20 bytes {2} {3} {4} {5} [built]
           [3] ./node_modules/x.js 20 bytes {2} {4} {5} {6} [built]
           [4] ./node_modules/y.js 20 bytes {2} {4} {7} [built]
    -     chunk    {3} default/async-a~async-b~async-c.js (async-a~async-b~async-c) 20 bytes <{0}> ={1}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{9}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c)
    +     chunk    {3} default/async-a~async-b~async-c.js, async-a~async-b~async-c.css (async-a~async-b~async-c) 20 bytes <{0}> ={1}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{9}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
           [2] ./d.js 20 bytes {2} {3} {4} {5} [built]
    -     chunk    {4} default/b.js (b) 152 bytes [entry] [rendered]
    +     chunk    {4} default/b.js, b.css (b) 152 bytes [entry] [rendered]
              > ./b b
           [2] ./d.js 20 bytes {2} {3} {4} {5} [built]
           [3] ./node_modules/x.js 20 bytes {2} {4} {5} {6} [built]
           [4] ./node_modules/y.js 20 bytes {2} {4} {7} [built]
           [5] ./b.js 72 bytes {4} {8} [built]
           [6] ./f.js 20 bytes {4} {5} {9} [built]
    -     chunk    {5} default/c.js (c) 152 bytes [entry] [rendered]
    +     chunk    {5} default/c.js, c.css (c) 152 bytes [entry] [rendered]
              > ./c c
           [2] ./d.js 20 bytes {2} {3} {4} {5} [built]
           [3] ./node_modules/x.js 20 bytes {2} {4} {5} {6} [built]
           [6] ./f.js 20 bytes {4} {5} {9} [built]
           [7] ./c.js 72 bytes {5} {10} [built]
           [8] ./node_modules/z.js 20 bytes {5} {11} [built]
    -     chunk    {6} default/vendors~async-a~async-b~async-c.js (vendors~async-a~async-b~async-c) 20 bytes <{0}> ={1}= ={3}= ={7}= ={8}= ={9}= ={10}= ={11}= >{9}< >{12}< [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-a~async-b~async-c)
    +     chunk    {6} default/vendors~async-a~async-b~async-c.js, vendors~async-a~async-b~async-c.css (vendors~async-a~async-b~async-c) 20 bytes <{0}> ={1}= ={3}= ={7}= ={8}= ={9}= ={10}= ={11}= >{9}< >{12}< [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-a~async-b~async-c)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
           [3] ./node_modules/x.js 20 bytes {2} {4} {5} {6} [built]
    -     chunk    {7} default/vendors~async-a~async-b.js (vendors~async-a~async-b) 20 bytes <{0}> ={1}= ={3}= ={6}= ={8}= ={9}= >{9}< >{12}< [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-a~async-b)
    +     chunk    {7} default/vendors~async-a~async-b.js, vendors~async-a~async-b.css (vendors~async-a~async-b) 20 bytes <{0}> ={1}= ={3}= ={6}= ={8}= ={9}= >{9}< >{12}< [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-a~async-b)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
           [4] ./node_modules/y.js 20 bytes {2} {4} {7} [built]
    -     chunk    {8} default/async-b.js (async-b) 72 bytes <{0}> ={3}= ={6}= ={7}= ={9}= [rendered]
    +     chunk    {8} default/async-b.js, async-b.css (async-b) 72 bytes <{0}> ={3}= ={6}= ={7}= ={9}= [rendered]
              > ./b [0] ./index.js 2:0-47
           [5] ./b.js 72 bytes {4} {8} [built]
    -     chunk    {9} default/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{6}> <{7}> ={3}= ={6}= ={7}= ={8}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
    +     chunk    {9} default/async-b~async-c~async-g.js, async-b~async-c~async-g.css (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{6}> <{7}> ={3}= ={6}= ={7}= ={8}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
              > ./g [] 6:0-47
              > ./g [] 6:0-47
           [6] ./f.js 20 bytes {4} {5} {9} [built]
    -     chunk   {10} default/async-c.js (async-c) 72 bytes <{0}> ={3}= ={6}= ={9}= ={11}= [rendered]
    +     chunk   {10} default/async-c.js, async-c.css (async-c) 72 bytes <{0}> ={3}= ={6}= ={9}= ={11}= [rendered]
              > ./c [0] ./index.js 3:0-47
           [7] ./c.js 72 bytes {5} {10} [built]
    -     chunk   {11} default/vendors~async-c.js (vendors~async-c) 20 bytes <{0}> ={3}= ={6}= ={9}= ={10}= [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-c)
    +     chunk   {11} default/vendors~async-c.js, vendors~async-c.css (vendors~async-c) 20 bytes <{0}> ={3}= ={6}= ={9}= ={10}= [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-c)
              > ./c [0] ./index.js 3:0-47
           [8] ./node_modules/z.js 20 bytes {5} {11} [built]
    -     chunk   {12} default/async-g.js (async-g) 34 bytes <{1}> <{2}> <{3}> <{6}> <{7}> ={9}= [rendered]
    +     chunk   {12} default/async-g.js, async-g.css (async-g) 34 bytes <{1}> <{2}> <{3}> <{6}> <{7}> ={9}= [rendered]
              > ./g [] 6:0-47
              > ./g [] 6:0-47
           [9] ./g.js 34 bytes {12} [built]
      Child vendors:
    -     Entrypoint main = vendors/main.js
    -     Entrypoint a = vendors/vendors.js vendors/a.js
    -     Entrypoint b = vendors/vendors.js vendors/b.js
    -     Entrypoint c = vendors/vendors.js vendors/c.js
    -     chunk    {0} vendors/main.js (main) 147 bytes >{2}< >{3}< >{4}< [entry] [rendered]
    +     Entrypoint main = vendors/main.js main.css
    +     Entrypoint a = vendors/vendors.js vendors.css vendors/a.js a.css
    +     Entrypoint b = vendors/vendors.js vendors.css vendors/b.js b.css
    +     Entrypoint c = vendors/vendors.js vendors.css vendors/c.js c.css
    +     chunk    {0} vendors/main.js, main.css (main) 147 bytes >{2}< >{3}< >{4}< [entry] [rendered]
              > ./ main
           [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} vendors/a.js (a) 176 bytes ={7}= >{8}< [entry] [rendered]
    +     chunk    {1} vendors/a.js, a.css (a) 176 bytes ={7}= >{8}< [entry] [rendered]
              > ./a a
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -     chunk    {2} vendors/async-a.js (async-a) 216 bytes <{0}> >{8}< [rendered]
    +     chunk    {2} vendors/async-a.js, async-a.css (async-a) 216 bytes <{0}> >{8}< [rendered]
              > ./a [0] ./index.js 1:0-47
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {2} {3} {4} {7} [built]
           [4] ./node_modules/y.js 20 bytes {2} {3} {7} [built]
    -     chunk    {3} vendors/async-b.js (async-b) 152 bytes <{0}> [rendered]
    +     chunk    {3} vendors/async-b.js, async-b.css (async-b) 152 bytes <{0}> [rendered]
              > ./b [0] ./index.js 2:0-47
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {2} {3} {4} {7} [built]
           [4] ./node_modules/y.js 20 bytes {2} {3} {7} [built]
           [5] ./b.js 72 bytes {3} {5} [built]
           [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
    -     chunk    {4} vendors/async-c.js (async-c) 152 bytes <{0}> [rendered]
    +     chunk    {4} vendors/async-c.js, async-c.css (async-c) 152 bytes <{0}> [rendered]
              > ./c [0] ./index.js 3:0-47
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [3] ./node_modules/x.js 20 bytes {2} {3} {4} {7} [built]
           [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
           [7] ./c.js 72 bytes {4} {6} [built]
           [8] ./node_modules/z.js 20 bytes {4} {7} [built]
    -     chunk    {5} vendors/b.js (b) 112 bytes ={7}= [entry] [rendered]
    +     chunk    {5} vendors/b.js, b.css (b) 112 bytes ={7}= [entry] [rendered]
              > ./b b
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [5] ./b.js 72 bytes {3} {5} [built]
           [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
    -     chunk    {6} vendors/c.js (c) 112 bytes ={7}= [entry] [rendered]
    +     chunk    {6} vendors/c.js, c.css (c) 112 bytes ={7}= [entry] [rendered]
              > ./c c
           [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
           [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
           [7] ./c.js 72 bytes {4} {6} [built]
    -     chunk    {7} vendors/vendors.js (vendors) 60 bytes ={1}= ={5}= ={6}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors)
    +     chunk    {7} vendors/vendors.js, vendors.css (vendors) 60 bytes ={1}= ={5}= ={6}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors)
              > ./a a
              > ./b b
              > ./c c
           [3] ./node_modules/x.js 20 bytes {2} {3} {4} {7} [built]
           [4] ./node_modules/y.js 20 bytes {2} {3} {7} [built]
           [8] ./node_modules/z.js 20 bytes {4} {7} [built]
    -     chunk    {8} vendors/async-g.js (async-g) 54 bytes <{1}> <{2}> <{7}> [rendered]
    +     chunk    {8} vendors/async-g.js, async-g.css (async-g) 54 bytes <{1}> <{2}> <{7}> [rendered]
              > ./g [] 6:0-47
              > ./g [] 6:0-47
           [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
           [9] ./g.js 34 bytes {8} [built]
      Child multiple-vendors:
    -     Entrypoint main = multiple-vendors/main.js
    -     Entrypoint a = multiple-vendors/libs-x.js multiple-vendors/vendors~a~async-a~async-b~b.js multiple-vendors/a~async-a~async-b~async-c~b~c.js multiple-vendors/a.js
    -     Entrypoint b = multiple-vendors/libs-x.js multiple-vendors/vendors~a~async-a~async-b~b.js multiple-vendors/a~async-a~async-b~async-c~b~c.js multiple-vendors/b.js
    -     Entrypoint c = multiple-vendors/libs-x.js multiple-vendors/vendors~async-c~c.js multiple-vendors/a~async-a~async-b~async-c~b~c.js multiple-vendors/c.js
    -     chunk    {0} multiple-vendors/main.js (main) 147 bytes >{1}< >{3}< >{4}< >{5}< >{6}< >{8}< >{10}< >{11}< [entry] [rendered]
    +     Entrypoint main = multiple-vendors/main.js main.css
    +     Entrypoint a = multiple-vendors/libs-x.js libs-x.css multiple-vendors/vendors~a~async-a~async-b~b.js vendors~a~async-a~async-b~b.css multiple-vendors/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css multiple-vendors/a.js a.css
    +     Entrypoint b = multiple-vendors/libs-x.js libs-x.css multiple-vendors/vendors~a~async-a~async-b~b.js vendors~a~async-a~async-b~b.css multiple-vendors/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css multiple-vendors/b.js b.css
    +     Entrypoint c = multiple-vendors/libs-x.js libs-x.css multiple-vendors/vendors~async-c~c.js vendors~async-c~c.css multiple-vendors/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css multiple-vendors/c.js c.css
    +     chunk    {0} multiple-vendors/main.js, main.css (main) 147 bytes >{1}< >{3}< >{4}< >{5}< >{6}< >{8}< >{10}< >{11}< [entry] [rendered]
              > ./ main
           [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} multiple-vendors/async-a.js (async-a) 156 bytes <{0}> ={3}= ={4}= ={5}= >{8}< >{12}< [rendered]
    +     chunk    {1} multiple-vendors/async-a.js, async-a.css (async-a) 156 bytes <{0}> ={3}= ={4}= ={5}= >{8}< >{12}< [rendered]
              > ./a [0] ./index.js 1:0-47
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
    -     chunk    {2} multiple-vendors/a.js (a) 156 bytes ={3}= ={4}= ={5}= >{8}< >{12}< [entry] [rendered]
    +     chunk    {2} multiple-vendors/a.js, a.css (a) 156 bytes ={3}= ={4}= ={5}= >{8}< >{12}< [entry] [rendered]
              > ./a a
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
    -     chunk    {3} multiple-vendors/a~async-a~async-b~async-c~b~c.js (a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c)
    +     chunk    {3} multiple-vendors/a~async-a~async-b~async-c~b~c.js, a~async-a~async-b~async-c~b~c.css (a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
              > ./a a
              > ./b b
              > ./c c
           [2] ./d.js 20 bytes {3} [built]
    -     chunk    {4} multiple-vendors/libs-x.js (libs-x) 20 bytes <{0}> ={1}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x)
    +     chunk    {4} multiple-vendors/libs-x.js, libs-x.css (libs-x) 20 bytes <{0}> ={1}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
              > ./a a
              > ./b b
              > ./c c
           [3] ./node_modules/x.js 20 bytes {4} [built]
    -     chunk    {5} multiple-vendors/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{0}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b)
    +     chunk    {5} multiple-vendors/vendors~a~async-a~async-b~b.js, vendors~a~async-a~async-b~b.css (vendors~a~async-a~async-b~b) 20 bytes <{0}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
              > ./a a
              > ./b b
           [4] ./node_modules/y.js 20 bytes {5} [built]
    -     chunk    {6} multiple-vendors/async-b.js (async-b) 72 bytes <{0}> ={3}= ={4}= ={5}= ={8}= [rendered]
    +     chunk    {6} multiple-vendors/async-b.js, async-b.css (async-b) 72 bytes <{0}> ={3}= ={4}= ={5}= ={8}= [rendered]
              > ./b [0] ./index.js 2:0-47
           [5] ./b.js 72 bytes {6} {7} [built]
    -     chunk    {7} multiple-vendors/b.js (b) 92 bytes ={3}= ={4}= ={5}= [entry] [rendered]
    +     chunk    {7} multiple-vendors/b.js, b.css (b) 92 bytes ={3}= ={4}= ={5}= [entry] [rendered]
              > ./b b
           [5] ./b.js 72 bytes {6} {7} [built]
           [6] ./f.js 20 bytes {7} {8} {9} [built]
    -     chunk    {8} multiple-vendors/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{4}> <{5}> ={3}= ={4}= ={5}= ={6}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
    +     chunk    {8} multiple-vendors/async-b~async-c~async-g.js, async-b~async-c~async-g.css (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{4}> <{5}> ={3}= ={4}= ={5}= ={6}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
              > ./g [] 6:0-47
              > ./g [] 6:0-47
           [6] ./f.js 20 bytes {7} {8} {9} [built]
    -     chunk    {9} multiple-vendors/c.js (c) 92 bytes ={3}= ={4}= ={11}= [entry] [rendered]
    +     chunk    {9} multiple-vendors/c.js, c.css (c) 92 bytes ={3}= ={4}= ={11}= [entry] [rendered]
              > ./c c
           [6] ./f.js 20 bytes {7} {8} {9} [built]
           [7] ./c.js 72 bytes {9} {10} [built]
    -     chunk   {10} multiple-vendors/async-c.js (async-c) 72 bytes <{0}> ={3}= ={4}= ={8}= ={11}= [rendered]
    +     chunk   {10} multiple-vendors/async-c.js, async-c.css (async-c) 72 bytes <{0}> ={3}= ={4}= ={8}= ={11}= [rendered]
              > ./c [0] ./index.js 3:0-47
           [7] ./c.js 72 bytes {9} {10} [built]
    -     chunk   {11} multiple-vendors/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{0}> ={3}= ={4}= ={8}= ={9}= ={10}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c)
    +     chunk   {11} multiple-vendors/vendors~async-c~c.js, vendors~async-c~c.css (vendors~async-c~c) 20 bytes <{0}> ={3}= ={4}= ={8}= ={9}= ={10}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c)
              > ./c [0] ./index.js 3:0-47
              > ./c c
           [8] ./node_modules/z.js 20 bytes {11} [built]
    -     chunk   {12} multiple-vendors/async-g.js (async-g) 34 bytes <{1}> <{2}> <{3}> <{4}> <{5}> ={8}= [rendered]
    +     chunk   {12} multiple-vendors/async-g.js, async-g.css (async-g) 34 bytes <{1}> <{2}> <{3}> <{4}> <{5}> ={8}= [rendered]
              > ./g [] 6:0-47
              > ./g [] 6:0-47
           [9] ./g.js 34 bytes {12} [built]
      Child all:
    -     Entrypoint main = all/main.js
    -     Entrypoint a = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~a~async-a~async-b~b.js all/a~async-a~async-b~async-c~b~c.js all/a.js
    -     Entrypoint b = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~a~async-a~async-b~b.js all/a~async-a~async-b~async-c~b~c.js all/b.js
    -     Entrypoint c = all/vendors~a~async-a~async-b~async-c~b~c.js all/vendors~async-c~c.js all/a~async-a~async-b~async-c~b~c.js all/c.js
    -     chunk    {0} all/main.js (main) 147 bytes >{1}< >{3}< >{4}< >{5}< >{6}< >{8}< >{10}< >{11}< [entry] [rendered]
    +     Entrypoint main = all/main.js main.css
    +     Entrypoint a = all/vendors~a~async-a~async-b~async-c~b~c.js vendors~a~async-a~async-b~async-c~b~c.css all/vendors~a~async-a~async-b~b.js vendors~a~async-a~async-b~b.css all/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css all/a.js a.css
    +     Entrypoint b = all/vendors~a~async-a~async-b~async-c~b~c.js vendors~a~async-a~async-b~async-c~b~c.css all/vendors~a~async-a~async-b~b.js vendors~a~async-a~async-b~b.css all/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css all/b.js b.css
    +     Entrypoint c = all/vendors~a~async-a~async-b~async-c~b~c.js vendors~a~async-a~async-b~async-c~b~c.css all/vendors~async-c~c.js vendors~async-c~c.css all/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css all/c.js c.css
    +     chunk    {0} all/main.js, main.css (main) 147 bytes >{1}< >{3}< >{4}< >{5}< >{6}< >{8}< >{10}< >{11}< [entry] [rendered]
              > ./ main
           [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} all/async-a.js (async-a) 156 bytes <{0}> ={3}= ={4}= ={5}= >{8}< >{12}< [rendered]
    +     chunk    {1} all/async-a.js, async-a.css (async-a) 156 bytes <{0}> ={3}= ={4}= ={5}= >{8}< >{12}< [rendered]
              > ./a [0] ./index.js 1:0-47
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
    -     chunk    {2} all/a.js (a) 156 bytes ={3}= ={4}= ={5}= >{8}< >{12}< [entry] [rendered]
    +     chunk    {2} all/a.js, a.css (a) 156 bytes ={3}= ={4}= ={5}= >{8}< >{12}< [entry] [rendered]
              > ./a a
           [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
               | ./e.js 20 bytes [built]
               | ./a.js 121 bytes [built]
    -     chunk    {3} all/a~async-a~async-b~async-c~b~c.js (a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c)
    +     chunk    {3} all/a~async-a~async-b~async-c~b~c.js, a~async-a~async-b~async-c~b~c.css (a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
              > ./a a
              > ./b b
              > ./c c
           [2] ./d.js 20 bytes {3} [built]
    -     chunk    {4} all/vendors~a~async-a~async-b~async-c~b~c.js (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c)
    +     chunk    {4} all/vendors~a~async-a~async-b~async-c~b~c.js, vendors~a~async-a~async-b~async-c~b~c.css (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
              > ./a a
              > ./b b
              > ./c c
           [3] ./node_modules/x.js 20 bytes {4} [built]
    -     chunk    {5} all/vendors~a~async-a~async-b~b.js (vendors~a~async-a~async-b~b) 20 bytes <{0}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b)
    +     chunk    {5} all/vendors~a~async-a~async-b~b.js, vendors~a~async-a~async-b~b.css (vendors~a~async-a~async-b~b) 20 bytes <{0}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b)
              > ./a [0] ./index.js 1:0-47
              > ./b [0] ./index.js 2:0-47
              > ./a a
              > ./b b
           [4] ./node_modules/y.js 20 bytes {5} [built]
    -     chunk    {6} all/async-b.js (async-b) 72 bytes <{0}> ={3}= ={4}= ={5}= ={8}= [rendered]
    +     chunk    {6} all/async-b.js, async-b.css (async-b) 72 bytes <{0}> ={3}= ={4}= ={5}= ={8}= [rendered]
              > ./b [0] ./index.js 2:0-47
           [5] ./b.js 72 bytes {6} {7} [built]
    -     chunk    {7} all/b.js (b) 92 bytes ={3}= ={4}= ={5}= [entry] [rendered]
    +     chunk    {7} all/b.js, b.css (b) 92 bytes ={3}= ={4}= ={5}= [entry] [rendered]
              > ./b b
           [5] ./b.js 72 bytes {6} {7} [built]
           [6] ./f.js 20 bytes {7} {8} {9} [built]
    -     chunk    {8} all/async-b~async-c~async-g.js (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{4}> <{5}> ={3}= ={4}= ={5}= ={6}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
    +     chunk    {8} all/async-b~async-c~async-g.js, async-b~async-c~async-g.css (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{4}> <{5}> ={3}= ={4}= ={5}= ={6}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
              > ./b [0] ./index.js 2:0-47
              > ./c [0] ./index.js 3:0-47
              > ./g [] 6:0-47
              > ./g [] 6:0-47
           [6] ./f.js 20 bytes {7} {8} {9} [built]
    -     chunk    {9} all/c.js (c) 92 bytes ={3}= ={4}= ={11}= [entry] [rendered]
    +     chunk    {9} all/c.js, c.css (c) 92 bytes ={3}= ={4}= ={11}= [entry] [rendered]
              > ./c c
           [6] ./f.js 20 bytes {7} {8} {9} [built]
           [7] ./c.js 72 bytes {9} {10} [built]
    -     chunk   {10} all/async-c.js (async-c) 72 bytes <{0}> ={3}= ={4}= ={8}= ={11}= [rendered]
    +     chunk   {10} all/async-c.js, async-c.css (async-c) 72 bytes <{0}> ={3}= ={4}= ={8}= ={11}= [rendered]
              > ./c [0] ./index.js 3:0-47
           [7] ./c.js 72 bytes {9} {10} [built]
    -     chunk   {11} all/vendors~async-c~c.js (vendors~async-c~c) 20 bytes <{0}> ={3}= ={4}= ={8}= ={9}= ={10}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c)
    +     chunk   {11} all/vendors~async-c~c.js, vendors~async-c~c.css (vendors~async-c~c) 20 bytes <{0}> ={3}= ={4}= ={8}= ={9}= ={10}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c)
              > ./c [0] ./index.js 3:0-47
              > ./c c
           [8] ./node_modules/z.js 20 bytes {11} [built]
    -     chunk   {12} all/async-g.js (async-g) 34 bytes <{1}> <{2}> <{3}> <{4}> <{5}> ={8}= [rendered]
    +     chunk   {12} all/async-g.js, async-g.css (async-g) 34 bytes <{1}> <{2}> <{3}> <{4}> <{5}> ={8}= [rendered]
              > ./g [] 6:0-47
              > ./g [] 6:0-47
           [9] ./g.js 34 bytes {12} [built]"

      134 | 					.replace(path.join(base, testName), "Xdir/" + testName)
      135 | 					.replace(/, additional resolving: Xms/g, "");
    > 136 | 				expect(actual).toMatchSnapshot();
          | 				               ^
      137 | 				done();
      138 | 			});
      139 | 		});

      at c.run (test/StatsTestCases.test.js:136:20)
      at finalCallback (lib/MultiCompiler.js:247:12)
      at runWithDependencies.err (lib/MultiCompiler.js:270:6)
      at done (node_modules/neo-async/async.js:2920:13)
      at runCompilers (lib/MultiCompiler.js:174:48)
      at err (lib/MultiCompiler.js:181:7)
      at compiler.run (lib/MultiCompiler.js:263:7)
      at finalCallback (lib/Compiler.js:153:39)
      at hooks.done.callAsync.err (lib/Compiler.js:202:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:15:1)

  ● StatsTestCases › should print correct stats for chunk-module-id-range

    expect(value).toMatchSnapshot()

    Received value does not match stored snapshot "StatsTestCases should print correct stats for chunk-module-id-range 1".

    - Snapshot
    + Received

    - "Child disabled:
    -     Entrypoint main = disabled/main.js main.css
    -     Entrypoint a = disabled/a.js a.css
    -     Entrypoint b = disabled/b.js b.css
    -     Entrypoint c = disabled/c.js c.css
    -     chunk    {0} disabled/main.js, main.css (main) 147 bytes >{2}< >{4}< >{6}< [entry] [rendered]
    -         > ./ main
    -      [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} disabled/a.js, a.css (a) 216 bytes >{7}< [entry] [rendered]
    -         > ./a a
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [4] ./node_modules/y.js 20 bytes {1} {2} {3} {4} [built]
    -     chunk    {2} disabled/async-a.js, async-a.css (async-a) 216 bytes <{0}> >{7}< [rendered]
    -         > ./a [0] ./index.js 1:0-47
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [4] ./node_modules/y.js 20 bytes {1} {2} {3} {4} [built]
    -     chunk    {3} disabled/b.js, b.css (b) 152 bytes [entry] [rendered]
    -         > ./b b
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [4] ./node_modules/y.js 20 bytes {1} {2} {3} {4} [built]
    -      [5] ./b.js 72 bytes {3} {4} [built]
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
    -     chunk    {4} disabled/async-b.js, async-b.css (async-b) 152 bytes <{0}> [rendered]
    -         > ./b [0] ./index.js 2:0-47
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [4] ./node_modules/y.js 20 bytes {1} {2} {3} {4} [built]
    -      [5] ./b.js 72 bytes {3} {4} [built]
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
    -     chunk    {5} disabled/c.js, c.css (c) 167 bytes [entry] [rendered]
    -         > ./c c
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
    -      [7] ./c.js + 1 modules 107 bytes {5} {6} [built]
    -          | ./node_modules/z.js 20 bytes [built]
    -          | ./c.js 72 bytes [built]
    -     chunk    {6} disabled/async-c.js, async-c.css (async-c) 167 bytes <{0}> [rendered]
    -         > ./c [0] ./index.js 3:0-47
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
    -      [7] ./c.js + 1 modules 107 bytes {5} {6} [built]
    -          | ./node_modules/z.js 20 bytes [built]
    -          | ./c.js 72 bytes [built]
    -     chunk    {7} disabled/async-g.js, async-g.css (async-g) 54 bytes <{1}> <{2}> [rendered]
    -         > ./g [] 6:0-47
    -         > ./g [] 6:0-47
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {7} [built]
    -      [8] ./g.js 34 bytes {7} [built]
    - Child default:
    -     Entrypoint main = default/main.js main.css
    -     Entrypoint a = default/a.js a.css
    -     Entrypoint b = default/b.js b.css
    -     Entrypoint c = default/c.js c.css
    -     chunk    {0} default/main.js, main.css (main) 147 bytes >{1}< >{3}< >{6}< >{7}< >{8}< >{9}< >{10}< >{11}< [entry] [rendered]
    -         > ./ main
    -      [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} default/async-a.js, async-a.css (async-a) 156 bytes <{0}> ={3}= ={6}= ={7}= >{9}< >{12}< [rendered]
    -         > ./a [0] ./index.js 1:0-47
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -     chunk    {2} default/a.js, a.css (a) 216 bytes >{9}< >{12}< [entry] [rendered]
    -         > ./a a
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -      [2] ./d.js 20 bytes {2} {3} {4} {5} [built]
    -      [3] ./node_modules/x.js 20 bytes {2} {4} {5} {6} [built]
    -      [4] ./node_modules/y.js 20 bytes {2} {4} {7} [built]
    -     chunk    {3} default/async-a~async-b~async-c.js, async-a~async-b~async-c.css (async-a~async-b~async-c) 20 bytes <{0}> ={1}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{9}< >{12}< [rendered] split chunk (cache group: default) (name: async-a~async-b~async-c)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -      [2] ./d.js 20 bytes {2} {3} {4} {5} [built]
    -     chunk    {4} default/b.js, b.css (b) 152 bytes [entry] [rendered]
    -         > ./b b
    -      [2] ./d.js 20 bytes {2} {3} {4} {5} [built]
    -      [3] ./node_modules/x.js 20 bytes {2} {4} {5} {6} [built]
    -      [4] ./node_modules/y.js 20 bytes {2} {4} {7} [built]
    -      [5] ./b.js 72 bytes {4} {8} [built]
    -      [6] ./f.js 20 bytes {4} {5} {9} [built]
    -     chunk    {5} default/c.js, c.css (c) 152 bytes [entry] [rendered]
    -         > ./c c
    -      [2] ./d.js 20 bytes {2} {3} {4} {5} [built]
    -      [3] ./node_modules/x.js 20 bytes {2} {4} {5} {6} [built]
    -      [6] ./f.js 20 bytes {4} {5} {9} [built]
    -      [7] ./c.js 72 bytes {5} {10} [built]
    -      [8] ./node_modules/z.js 20 bytes {5} {11} [built]
    -     chunk    {6} default/vendors~async-a~async-b~async-c.js, vendors~async-a~async-b~async-c.css (vendors~async-a~async-b~async-c) 20 bytes <{0}> ={1}= ={3}= ={7}= ={8}= ={9}= ={10}= ={11}= >{9}< >{12}< [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-a~async-b~async-c)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -      [3] ./node_modules/x.js 20 bytes {2} {4} {5} {6} [built]
    -     chunk    {7} default/vendors~async-a~async-b.js, vendors~async-a~async-b.css (vendors~async-a~async-b) 20 bytes <{0}> ={1}= ={3}= ={6}= ={8}= ={9}= >{9}< >{12}< [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-a~async-b)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -      [4] ./node_modules/y.js 20 bytes {2} {4} {7} [built]
    -     chunk    {8} default/async-b.js, async-b.css (async-b) 72 bytes <{0}> ={3}= ={6}= ={7}= ={9}= [rendered]
    -         > ./b [0] ./index.js 2:0-47
    -      [5] ./b.js 72 bytes {4} {8} [built]
    -     chunk    {9} default/async-b~async-c~async-g.js, async-b~async-c~async-g.css (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{6}> <{7}> ={3}= ={6}= ={7}= ={8}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -         > ./g [] 6:0-47
    -         > ./g [] 6:0-47
    -      [6] ./f.js 20 bytes {4} {5} {9} [built]
    -     chunk   {10} default/async-c.js, async-c.css (async-c) 72 bytes <{0}> ={3}= ={6}= ={9}= ={11}= [rendered]
    -         > ./c [0] ./index.js 3:0-47
    -      [7] ./c.js 72 bytes {5} {10} [built]
    -     chunk   {11} default/vendors~async-c.js, vendors~async-c.css (vendors~async-c) 20 bytes <{0}> ={3}= ={6}= ={9}= ={10}= [rendered] split chunk (cache group: defaultVendors) (name: vendors~async-c)
    -         > ./c [0] ./index.js 3:0-47
    -      [8] ./node_modules/z.js 20 bytes {5} {11} [built]
    -     chunk   {12} default/async-g.js, async-g.css (async-g) 34 bytes <{1}> <{2}> <{3}> <{6}> <{7}> ={9}= [rendered]
    -         > ./g [] 6:0-47
    -         > ./g [] 6:0-47
    -      [9] ./g.js 34 bytes {12} [built]
    - Child vendors:
    -     Entrypoint main = vendors/main.js main.css
    -     Entrypoint a = vendors/vendors.js vendors.css vendors/a.js a.css
    -     Entrypoint b = vendors/vendors.js vendors.css vendors/b.js b.css
    -     Entrypoint c = vendors/vendors.js vendors.css vendors/c.js c.css
    -     chunk    {0} vendors/main.js, main.css (main) 147 bytes >{2}< >{3}< >{4}< [entry] [rendered]
    -         > ./ main
    -      [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} vendors/a.js, a.css (a) 176 bytes ={7}= >{8}< [entry] [rendered]
    -         > ./a a
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -     chunk    {2} vendors/async-a.js, async-a.css (async-a) 216 bytes <{0}> >{8}< [rendered]
    -         > ./a [0] ./index.js 1:0-47
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {2} {3} {4} {7} [built]
    -      [4] ./node_modules/y.js 20 bytes {2} {3} {7} [built]
    -     chunk    {3} vendors/async-b.js, async-b.css (async-b) 152 bytes <{0}> [rendered]
    -         > ./b [0] ./index.js 2:0-47
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {2} {3} {4} {7} [built]
    -      [4] ./node_modules/y.js 20 bytes {2} {3} {7} [built]
    -      [5] ./b.js 72 bytes {3} {5} [built]
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
    -     chunk    {4} vendors/async-c.js, async-c.css (async-c) 152 bytes <{0}> [rendered]
    -         > ./c [0] ./index.js 3:0-47
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [3] ./node_modules/x.js 20 bytes {2} {3} {4} {7} [built]
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
    -      [7] ./c.js 72 bytes {4} {6} [built]
    -      [8] ./node_modules/z.js 20 bytes {4} {7} [built]
    -     chunk    {5} vendors/b.js, b.css (b) 112 bytes ={7}= [entry] [rendered]
    -         > ./b b
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [5] ./b.js 72 bytes {3} {5} [built]
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
    -     chunk    {6} vendors/c.js, c.css (c) 112 bytes ={7}= [entry] [rendered]
    -         > ./c c
    -      [2] ./d.js 20 bytes {1} {2} {3} {4} {5} {6} [built]
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
    -      [7] ./c.js 72 bytes {4} {6} [built]
    -     chunk    {7} vendors/vendors.js, vendors.css (vendors) 60 bytes ={1}= ={5}= ={6}= >{8}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors)
    -         > ./a a
    -         > ./b b
    -         > ./c c
    -      [3] ./node_modules/x.js 20 bytes {2} {3} {4} {7} [built]
    -      [4] ./node_modules/y.js 20 bytes {2} {3} {7} [built]
    -      [8] ./node_modules/z.js 20 bytes {4} {7} [built]
    -     chunk    {8} vendors/async-g.js, async-g.css (async-g) 54 bytes <{1}> <{2}> <{7}> [rendered]
    -         > ./g [] 6:0-47
    -         > ./g [] 6:0-47
    -      [6] ./f.js 20 bytes {3} {4} {5} {6} {8} [built]
    -      [9] ./g.js 34 bytes {8} [built]
    - Child multiple-vendors:
    -     Entrypoint main = multiple-vendors/main.js main.css
    -     Entrypoint a = multiple-vendors/libs-x.js libs-x.css multiple-vendors/vendors~a~async-a~async-b~b.js vendors~a~async-a~async-b~b.css multiple-vendors/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css multiple-vendors/a.js a.css
    -     Entrypoint b = multiple-vendors/libs-x.js libs-x.css multiple-vendors/vendors~a~async-a~async-b~b.js vendors~a~async-a~async-b~b.css multiple-vendors/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css multiple-vendors/b.js b.css
    -     Entrypoint c = multiple-vendors/libs-x.js libs-x.css multiple-vendors/vendors~async-c~c.js vendors~async-c~c.css multiple-vendors/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css multiple-vendors/c.js c.css
    -     chunk    {0} multiple-vendors/main.js, main.css (main) 147 bytes >{1}< >{3}< >{4}< >{5}< >{6}< >{8}< >{10}< >{11}< [entry] [rendered]
    -         > ./ main
    -      [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} multiple-vendors/async-a.js, async-a.css (async-a) 156 bytes <{0}> ={3}= ={4}= ={5}= >{8}< >{12}< [rendered]
    -         > ./a [0] ./index.js 1:0-47
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -     chunk    {2} multiple-vendors/a.js, a.css (a) 156 bytes ={3}= ={4}= ={5}= >{8}< >{12}< [entry] [rendered]
    -         > ./a a
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -     chunk    {3} multiple-vendors/a~async-a~async-b~async-c~b~c.js, a~async-a~async-b~async-c~b~c.css (a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -         > ./a a
    -         > ./b b
    -         > ./c c
    -      [2] ./d.js 20 bytes {3} [built]
    -     chunk    {4} multiple-vendors/libs-x.js, libs-x.css (libs-x) 20 bytes <{0}> ={1}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: libs) (name: libs-x)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -         > ./a a
    -         > ./b b
    -         > ./c c
    -      [3] ./node_modules/x.js 20 bytes {4} [built]
    -     chunk    {5} multiple-vendors/vendors~a~async-a~async-b~b.js, vendors~a~async-a~async-b~b.css (vendors~a~async-a~async-b~b) 20 bytes <{0}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -         > ./a a
    -         > ./b b
    -      [4] ./node_modules/y.js 20 bytes {5} [built]
    -     chunk    {6} multiple-vendors/async-b.js, async-b.css (async-b) 72 bytes <{0}> ={3}= ={4}= ={5}= ={8}= [rendered]
    -         > ./b [0] ./index.js 2:0-47
    -      [5] ./b.js 72 bytes {6} {7} [built]
    -     chunk    {7} multiple-vendors/b.js, b.css (b) 92 bytes ={3}= ={4}= ={5}= [entry] [rendered]
    -         > ./b b
    -      [5] ./b.js 72 bytes {6} {7} [built]
    -      [6] ./f.js 20 bytes {7} {8} {9} [built]
    -     chunk    {8} multiple-vendors/async-b~async-c~async-g.js, async-b~async-c~async-g.css (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{4}> <{5}> ={3}= ={4}= ={5}= ={6}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -         > ./g [] 6:0-47
    -         > ./g [] 6:0-47
    -      [6] ./f.js 20 bytes {7} {8} {9} [built]
    -     chunk    {9} multiple-vendors/c.js, c.css (c) 92 bytes ={3}= ={4}= ={11}= [entry] [rendered]
    -         > ./c c
    -      [6] ./f.js 20 bytes {7} {8} {9} [built]
    -      [7] ./c.js 72 bytes {9} {10} [built]
    -     chunk   {10} multiple-vendors/async-c.js, async-c.css (async-c) 72 bytes <{0}> ={3}= ={4}= ={8}= ={11}= [rendered]
    -         > ./c [0] ./index.js 3:0-47
    -      [7] ./c.js 72 bytes {9} {10} [built]
    -     chunk   {11} multiple-vendors/vendors~async-c~c.js, vendors~async-c~c.css (vendors~async-c~c) 20 bytes <{0}> ={3}= ={4}= ={8}= ={9}= ={10}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c)
    -         > ./c [0] ./index.js 3:0-47
    -         > ./c c
    -      [8] ./node_modules/z.js 20 bytes {11} [built]
    -     chunk   {12} multiple-vendors/async-g.js, async-g.css (async-g) 34 bytes <{1}> <{2}> <{3}> <{4}> <{5}> ={8}= [rendered]
    -         > ./g [] 6:0-47
    -         > ./g [] 6:0-47
    -      [9] ./g.js 34 bytes {12} [built]
    - Child all:
    -     Entrypoint main = all/main.js main.css
    -     Entrypoint a = all/vendors~a~async-a~async-b~async-c~b~c.js vendors~a~async-a~async-b~async-c~b~c.css all/vendors~a~async-a~async-b~b.js vendors~a~async-a~async-b~b.css all/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css all/a.js a.css
    -     Entrypoint b = all/vendors~a~async-a~async-b~async-c~b~c.js vendors~a~async-a~async-b~async-c~b~c.css all/vendors~a~async-a~async-b~b.js vendors~a~async-a~async-b~b.css all/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css all/b.js b.css
    -     Entrypoint c = all/vendors~a~async-a~async-b~async-c~b~c.js vendors~a~async-a~async-b~async-c~b~c.css all/vendors~async-c~c.js vendors~async-c~c.css all/a~async-a~async-b~async-c~b~c.js a~async-a~async-b~async-c~b~c.css all/c.js c.css
    -     chunk    {0} all/main.js, main.css (main) 147 bytes >{1}< >{3}< >{4}< >{5}< >{6}< >{8}< >{10}< >{11}< [entry] [rendered]
    -         > ./ main
    -      [0] ./index.js 147 bytes {0} [built]
    -     chunk    {1} all/async-a.js, async-a.css (async-a) 156 bytes <{0}> ={3}= ={4}= ={5}= >{8}< >{12}< [rendered]
    -         > ./a [0] ./index.js 1:0-47
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -     chunk    {2} all/a.js, a.css (a) 156 bytes ={3}= ={4}= ={5}= >{8}< >{12}< [entry] [rendered]
    -         > ./a a
    -      [1] ./a.js + 1 modules 156 bytes {1} {2} [built]
    -          | ./e.js 20 bytes [built]
    -          | ./a.js 121 bytes [built]
    -     chunk    {3} all/a~async-a~async-b~async-c~b~c.js, a~async-a~async-b~async-c~b~c.css (a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={4}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: default) (name: a~async-a~async-b~async-c~b~c)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -         > ./a a
    -         > ./b b
    -         > ./c c
    -      [2] ./d.js 20 bytes {3} [built]
    -     chunk    {4} all/vendors~a~async-a~async-b~async-c~b~c.js, vendors~a~async-a~async-b~async-c~b~c.css (vendors~a~async-a~async-b~async-c~b~c) 20 bytes <{0}> ={1}= ={2}= ={3}= ={5}= ={6}= ={7}= ={8}= ={9}= ={10}= ={11}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~async-c~b~c)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -         > ./a a
    -         > ./b b
    -         > ./c c
    -      [3] ./node_modules/x.js 20 bytes {4} [built]
    -     chunk    {5} all/vendors~a~async-a~async-b~b.js, vendors~a~async-a~async-b~b.css (vendors~a~async-a~async-b~b) 20 bytes <{0}> ={1}= ={2}= ={3}= ={4}= ={6}= ={7}= ={8}= >{8}< >{12}< [initial] [rendered] split chunk (cache group: vendors) (name: vendors~a~async-a~async-b~b)
    -         > ./a [0] ./index.js 1:0-47
    -         > ./b [0] ./index.js 2:0-47
    -         > ./a a
    -         > ./b b
    -      [4] ./node_modules/y.js 20 bytes {5} [built]
    -     chunk    {6} all/async-b.js, async-b.css (async-b) 72 bytes <{0}> ={3}= ={4}= ={5}= ={8}= [rendered]
    -         > ./b [0] ./index.js 2:0-47
    -      [5] ./b.js 72 bytes {6} {7} [built]
    -     chunk    {7} all/b.js, b.css (b) 92 bytes ={3}= ={4}= ={5}= [entry] [rendered]
    -         > ./b b
    -      [5] ./b.js 72 bytes {6} {7} [built]
    -      [6] ./f.js 20 bytes {7} {8} {9} [built]
    -     chunk    {8} all/async-b~async-c~async-g.js, async-b~async-c~async-g.css (async-b~async-c~async-g) 20 bytes <{0}> <{1}> <{2}> <{3}> <{4}> <{5}> ={3}= ={4}= ={5}= ={6}= ={10}= ={11}= ={12}= [rendered] split chunk (cache group: default) (name: async-b~async-c~async-g)
    -         > ./b [0] ./index.js 2:0-47
    -         > ./c [0] ./index.js 3:0-47
    -         > ./g [] 6:0-47
    -         > ./g [] 6:0-47
    -      [6] ./f.js 20 bytes {7} {8} {9} [built]
    -     chunk    {9} all/c.js, c.css (c) 92 bytes ={3}= ={4}= ={11}= [entry] [rendered]
    -         > ./c c
    -      [6] ./f.js 20 bytes {7} {8} {9} [built]
    -      [7] ./c.js 72 bytes {9} {10} [built]
    -     chunk   {10} all/async-c.js, async-c.css (async-c) 72 bytes <{0}> ={3}= ={4}= ={8}= ={11}= [rendered]
    -         > ./c [0] ./index.js 3:0-47
    -      [7] ./c.js 72 bytes {9} {10} [built]
    -     chunk   {11} all/vendors~async-c~c.js, vendors~async-c~c.css (vendors~async-c~c) 20 bytes <{0}> ={3}= ={4}= ={8}= ={9}= ={10}= [initial] [rendered] split chunk (cache group: vendors) (name: vendors~async-c~c)
    -         > ./c [0] ./index.js 3:0-47
    -         > ./c c
    -      [8] ./node_modules/z.js 20 bytes {11} [built]
    -     chunk   {12} all/async-g.js, async-g.css (async-g) 34 bytes <{1}> <{2}> <{3}> <{4}> <{5}> ={8}= [rendered]
    -         > ./g [] 6:0-47
    -         > ./g [] 6:0-47
    -      [9] ./g.js 34 bytes {12} [built]"
    + "Hash: 207462c689f8b46e8143
    + Time: Xms
    + Built at: Thu Jan 01 1970 00:00:00 GMT
    +     Asset      Size  Chunks             Chunk Names
    + main1.css   1 bytes       1  [emitted]  main1
    +  main1.js  4.86 KiB       1  [emitted]  main1
    + main2.css   1 bytes       0  [emitted]  main2
    +  main2.js  4.85 KiB       0  [emitted]  main2
    + Entrypoint main1 = main1.js main1.css
    + Entrypoint main2 = main2.js main2.css
    + chunk    {0} main2.js, main2.css (main2) 136 bytes [entry] [rendered]
    +     > ./main2 main2
    +    [0] ./d.js 20 bytes {0} {1} [built]
    +    [1] ./e.js 20 bytes {0} [built]
    +    [2] ./f.js 20 bytes {0} [built]
    +    [3] ./main2.js 56 bytes {0} [built]
    +  [101] ./a.js 20 bytes {0} {1} [built]
    + chunk    {1} main1.js, main1.css (main1) 136 bytes [entry] [rendered]
    +     > ./main1 main1
    +    [0] ./d.js 20 bytes {0} {1} [built]
    +    [4] ./c.js 20 bytes {1} [built]
    +  [100] ./main1.js 56 bytes {1} [built]
    +  [101] ./a.js 20 bytes {0} {1} [built]
    +  [102] ./b.js 20 bytes {1} [built]"

      134 | 					.replace(path.join(base, testName), "Xdir/" + testName)
      135 | 					.replace(/, additional resolving: Xms/g, "");
    > 136 | 				expect(actual).toMatchSnapshot();
          | 				               ^
      137 | 				done();
      138 | 			});
      139 | 		});

      at c.run (test/StatsTestCases.test.js:136:20)
      at finalCallback (lib/Compiler.js:153:39)
      at hooks.done.callAsync.err (lib/Compiler.js:202:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:6:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at emitRecords.err (lib/Compiler.js:200:22)
      at Compiler.emitRecords (lib/Compiler.js:315:39)
      at emitAssets.err (lib/Compiler.js:194:10)
      at hooks.afterEmit.callAsync.err (lib/Compiler.js:301:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:6:1)

  ● StatsTestCases › should print correct stats for filter-warnings

    expect(value).toMatchSnapshot()

    Received value does not match stored snapshot "StatsTestCases should print correct stats for filter-warnings 1".

    - Snapshot
    + Received

    @@ -1,13 +1,14 @@
    - "Hash: 70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d70b5eb88941464457a7d
    + "Hash: 54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf
      Child undefined:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
          
          WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
          
    @@ -27,58 +28,65 @@
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
      Child Terser:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
      Child /Terser/:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
      Child warnings => true:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
      Child [Terser]:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
      Child [/Terser/]:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
      Child [warnings => true]:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
      Child should not filter:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
          
          WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
          
    @@ -98,16 +106,17 @@
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
      Child /should not filter/:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
          
          WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
          
    @@ -127,16 +136,17 @@
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
      Child warnings => false:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
          
          WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
          
    @@ -156,16 +166,17 @@
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
      Child [should not filter]:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
          
          WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
          
    @@ -185,16 +196,17 @@
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
      Child [/should not filter/]:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
          
          WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
          
    @@ -214,16 +226,17 @@
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
      Child [warnings => false]:
    -     Hash: 70b5eb88941464457a7d
    +     Hash: 54f7e05266649c3e0cbf
          Time: Xms
          Built at: Thu Jan 01 1970 00:00:00 GMT
              Asset      Size  Chunks             Chunk Names
          bundle.js  2.84 KiB       0  [emitted]  main
    -     Entrypoint main = bundle.js
    +      main.css   1 bytes       0  [emitted]  main
    +     Entrypoint main = bundle.js main.css
          
          WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
          
          WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]

      134 | 					.replace(path.join(base, testName), "Xdir/" + testName)
      135 | 					.replace(/, additional resolving: Xms/g, "");
    > 136 | 				expect(actual).toMatchSnapshot();
          | 				               ^
      137 | 				done();
      138 | 			});
      139 | 		});

            
      at c.run (test/StatsTestCases.test.js:136:20)
      at finalCallback (lib/MultiCompiler.js:247:12)
      at runWithDependencies.err (lib/MultiCompiler.js:270:6)
      at done (node_modules/neo-async/async.js:2920:13)
      at runCompilers (lib/MultiCompiler.js:174:48)
      at err (lib/MultiCompiler.js:181:7)
      at compiler.run (lib/MultiCompiler.js:263:7)
      at finalCallback (lib/Compiler.js:153:39)
      at hooks.done.callAsync.err (lib/Compiler.js:202:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:15:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at emitRecords.err (lib/Compiler.js:200:22)
      at Compiler.emitRecords (lib/Compiler.js:315:39)
      at emitAssets.err (lib/Compiler.js:194:10)
      at hooks.afterEmit.callAsync.err (lib/Compiler.js:301:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:15:1)

  ● StatsTestCases › should print correct stats for graph-correctness-entries

    expect(value).toMatchSnapshot()

    Received value does not match stored snapshot "StatsTestCases should print correct stats for graph-correctness-entries 1".

    - Snapshot
    + Received

    - "Hash: 54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf54f7e05266649c3e0cbf
    - Child undefined:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    -     
    -     WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction2 [./index.js:9,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction3 [./index.js:10,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction4 [./index.js:11,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction5 [./index.js:12,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction1 [./a.js:3,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction2 [./a.js:4,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction3 [./a.js:5,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
    - Child Terser:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    - Child /Terser/:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    - Child warnings => true:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    - Child [Terser]:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    - Child [/Terser/]:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    - Child [warnings => true]:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    - Child should not filter:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    -     
    -     WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction2 [./index.js:9,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction3 [./index.js:10,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction4 [./index.js:11,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction5 [./index.js:12,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction1 [./a.js:3,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction2 [./a.js:4,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction3 [./a.js:5,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
    - Child /should not filter/:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    -     
    -     WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction2 [./index.js:9,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction3 [./index.js:10,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction4 [./index.js:11,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction5 [./index.js:12,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction1 [./a.js:3,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction2 [./a.js:4,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction3 [./a.js:5,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
    - Child warnings => false:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    -     
    -     WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction2 [./index.js:9,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction3 [./index.js:10,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction4 [./index.js:11,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction5 [./index.js:12,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction1 [./a.js:3,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction2 [./a.js:4,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction3 [./a.js:5,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
    - Child [should not filter]:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    -     
    -     WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction2 [./index.js:9,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction3 [./index.js:10,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction4 [./index.js:11,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction5 [./index.js:12,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction1 [./a.js:3,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction2 [./a.js:4,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction3 [./a.js:5,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
    - Child [/should not filter/]:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    -     
    -     WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction2 [./index.js:9,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction3 [./index.js:10,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction4 [./index.js:11,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction5 [./index.js:12,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction1 [./a.js:3,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction2 [./a.js:4,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction3 [./a.js:5,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]
    - Child [warnings => false]:
    -     Hash: 54f7e05266649c3e0cbf
    -     Time: Xms
    -     Built at: Thu Jan 01 1970 00:00:00 GMT
    -         Asset      Size  Chunks             Chunk Names
    -     bundle.js  2.84 KiB       0  [emitted]  main
    -      main.css   1 bytes       0  [emitted]  main
    -     Entrypoint main = bundle.js main.css
    -     
    -     WARNING in Terser Plugin: Dropping side-effect-free statement [./index.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction1 [./index.js:8,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction2 [./index.js:9,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction3 [./index.js:10,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction4 [./index.js:11,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someUnUsedFunction5 [./index.js:12,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction1 [./a.js:3,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction2 [./a.js:4,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction3 [./a.js:5,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction4 [./a.js:6,0]
    -     
    -     WARNING in Terser Plugin: Dropping unused function someRemoteUnUsedFunction5 [./a.js:7,0]"
    + "Entrypoint e1 = e1.js e1.css
    + Entrypoint e2 = e2.js e2.css
    + chunk    {0} e1.js, e1.css (e1) 49 bytes >{2}< [entry] [rendered]
    +  [0] ./e1.js 49 bytes {0} [built]
    +      entry ./e1  e1
    + chunk    {1} e2.js, e2.css (e2) 49 bytes >{3}< [entry] [rendered]
    +  [1] ./e2.js 49 bytes {1} [built]
    +      entry ./e2  e2
    + chunk    {2} a.js, a.css (a) 49 bytes <{0}> <{3}> >{4}< [rendered]
    +  [2] ./module-a.js 49 bytes {2} [built]
    +      import() ./module-a [0] ./e1.js 1:0-47
    +      import() ./module-a [3] ./module-c.js 1:0-47
    + chunk    {3} c.js, c.css (c) 49 bytes <{1}> <{4}> >{2}< [rendered]
    +  [3] ./module-c.js 49 bytes {3} [built]
    +      import() ./module-c [1] ./e2.js 1:0-47
    +      import() ./module-c [4] ./module-b.js 1:0-47
    + chunk    {4} b.js, b.css (b) 49 bytes <{2}> >{3}< [rendered]
    +  [4] ./module-b.js 49 bytes {4} [built]
    +      import() ./module-b [2] ./module-a.js 1:0-47"

      134 | 					.replace(path.join(base, testName), "Xdir/" + testName)
      135 | 					.replace(/, additional resolving: Xms/g, "");
    > 136 | 				expect(actual).toMatchSnapshot();
          | 				               ^
      137 | 				done();
      138 | 			});
      139 | 		});

      at c.run (test/StatsTestCases.test.js:136:20)
      at finalCallback (lib/Compiler.js:153:39)
      at hooks.done.callAsync.err (lib/Compiler.js:202:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:6:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at emitRecords.err (lib/Compiler.js:200:22)
      at Compiler.emitRecords (lib/Compiler.js:315:39)
      at emitAssets.err (lib/Compiler.js:194:10)
      at hooks.afterEmit.callAsync.err (lib/Compiler.js:301:14)
      at AsyncSeriesHook.eval [as callAsync] (eval at create (node_modules/tapable/lib/HookCodeFactory.js:32:10), <anonymous>:15:1)
      at AsyncSeriesHook.lazyCompileHook (node_modules/tapable/lib/Hook.js:154:20)
      at asyncLib.forEach.err (lib/Compiler.js:298:27)
      at done (node_modules/neo-async/async.js:2854:11)
      at node_modules/neo-async/async.js:2805:7
      at node_modules/graceful-fs/graceful-fs.js:43:10
      at node_modules/graceful-fs/graceful-fs.js:43:10

 › 4 snapshots failed.
Snapshot Summary
 › 4 snapshots failed from 1 test suite. Inspect your code changes or run `
Test Suites: 3 failed, 3 total
Tests:       7 failed, 8 skipped, 1758 passed, 1773 total
Snapshots:   4 failed, 83 passed, 87 total
Time:        20.744s

See complete report here.

@MatTheCat

This comment has been minimized.

Copy link

MatTheCat commented Sep 25, 2018

eventually adding support for using CSS as an Entrypoint (if it makes sense)

Your example perfectly illustrates why it makes sense. I don't need a JS file if I only want to build a CSS file.

@michael-ciniawsky michael-ciniawsky referenced this pull request Oct 2, 2018

Open

feat(url): add asset module support (`url`) #6446

3 of 5 tasks complete
@stevenvachon

This comment has been minimized.

Copy link

stevenvachon commented Nov 14, 2018

Has this been abandoned?

@evilebottnawi

This comment has been minimized.

Copy link
Member

evilebottnawi commented Nov 14, 2018

@stevenvachon yes

@stevenvachon

This comment has been minimized.

Copy link

stevenvachon commented Nov 14, 2018

Damnit. Permanently? And why?

@evilebottnawi

This comment has been minimized.

Copy link
Member

evilebottnawi commented Nov 14, 2018

@stevenvachon Permanently - no. And why - ask this @michael-ciniawsky

@stevenvachon

This comment has been minimized.

Copy link

stevenvachon commented Nov 14, 2018

@evilebottnawi

This comment has been minimized.

Copy link
Member

evilebottnawi commented Nov 14, 2018

In the next month I will release a new css-loader (with full ICSS support and good API). Also css modules will be dropped in favor postcss-modules. And then after a short while, we can start migrating (implementation) it in webpack.

@glen-84

This comment has been minimized.

Copy link

glen-84 commented Nov 16, 2018

@evilebottnawi,

Did Michael tell you that this has been abandoned? If so, why is it still open and assigned to the webpack 5 milestone? (with fairly-recent updates to the initial comment)

You seem to be talking about CSS modules, whereas this PR is about adding CSS as a module type to webpack – not the same thing at all.

@evilebottnawi

This comment has been minimized.

Copy link
Member

evilebottnawi commented Nov 16, 2018

@glen-84

Did Michael tell you that this has been abandoned?

No, for some developers, it is normal behavior.

If so, why is it still open and assigned to the webpack 5 milestone? (with fairly-recent updates to the initial comment)

Because we want implement this in webpack@5 and here example how you can start this in new PR 👍 .

You seem to be talking about CSS modules, whereas this PR is about adding CSS as a module type to webpack – not the same thing at all.

Backward compatibility should be saved with css modules

@iliakan

This comment has been minimized.

Copy link
Contributor

iliakan commented Dec 9, 2018

@evilebottnawi Are 1st-class CSS modules still on the roadmap?
I saw you released css-loader 2.0. It'll become a part of webpack?

@evilebottnawi

This comment has been minimized.

Copy link
Member

evilebottnawi commented Dec 10, 2018

@iliakan

Are 1st-class CSS modules still on the roadmap?

Not sure about css modules, they are should be as plugin for postcss (next major release css-loader@3), but built-in support css in roadmap (as and html). Why two major releases - for easy migration CLI as CFA, vue-cli and etc

I saw you released css-loader 2.0. It'll become a part of webpack?

Part of code yes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment