webpack 的 chunk

chunk 可以简单理解为 code spliting 出来的包,如果代码没有 code spliting 那么基本上可以认为对应于所输出的 bundle,webpack 1.0的文档中将 chunk 分为的三种类型,如下:

目前官方文档中�已经找不到这些描述了,/(ㄒoㄒ)/~~,不过可以在这两篇博文中看到�比较详细的解释

「前端」看懂前端脚手架你需要这篇webpack

webpack 进阶

我们在使用 webpack 的时候对于 chunk 比较关注的可能就是使用 �code spliting 和写插件的时候,code spliting 这个话题留到之后说,现在主要聊一聊写 webpack 插件时和 chunk 打交道的那些事儿。

webpack 插件的基本格式就是一个�含有 apply 方法的 JavaScript 的 class,这个在之前的文章中�已经比较完整的提到过了,需要参考�的可以看之前的文章:通过 Webpack 的 compiler 对象的 Hooks 学会编写 Webpack 插件的编写

我们在编写插件的时候可以通过 compilation 这个对象对 chunk 进行访问,compilation.chunks 即表示了这次编译的所有 chunks,可以看一个实例,简单的多入口配置 webpack 配置如下:

const config = {
    entry: {
        'index': path.join(__dirname, 'index.js'),
        'a': path.join(__dirname, 'a.css')
    },
    output: {
        filename: '[name].[hash].js',
        path: path.resolve(__dirname, 'dist')
    },
    module: {
        rules: [{
            test: /\.js$/,
            use: 'babel-loader'
        }, {
            test: /\.css$/,
            use: [MiniCssExtractPlugin.loader, 'css-loader']
        }]
    },
    plugins: [
        new cleanPlugin(),
        new MiniCssExtractPlugin({
            filename: '[name].css'
        }),
        new HtmlWebpackPlutin({
            template: path.resolve(__dirname, 'index.html')
        }),
        new ProgressBarPlugin(),
        new tablePlugin()
    ],

    devServer: {
        contentBase: path.join(__dirname, 'dist'),
        port: 10000
    },
    mode: 'development'
};

cleanPlugin 中将这次编译的 chunks 内容打印下来,如下:

const fs = require('fs')
const stringify = require('json-stringify-safe')

class cleanPlugin {
    constructor() {
        this.entriesWithNoJS = []
    }
    apply(compiler) {
        compiler.hooks.emit.tap('cleanPlugin', (compilation) => {
            const cache = []
            fs.writeFileSync('chunk.json', stringify(compilation.chunks, null, 2), {
                flag: 'w+'
            })
        })
    }
}

module.exports = cleanPlugin

json-stringify-safe 是为了解决 JSON.stringify 方法循环依赖的问题,类似的库还有 flattedcircular-json-es6

运行一下 webpack,打开 chunk.json 文件,这个文件的内容如下:

[
  {
    "id": "a",
    "ids": [
      "a"
    ],
    "debugId": 1004,
    "name": "a",
    "preventIntegration": false,
    "entryModule": {
      "dependencies": [
        {
          "module": {
            "dependencies": [],
            "blocks": [],
            "variables": [],
            "type": "css/mini-extract",
            "context": "/Users/huruji/Documents/webpac-plugin-test",
            "debugId": 1012,
            "hash": "08cf1f522d9d27c31e912691f4b31127",
            "renderedHash": "08cf1f522d9d27c31e91",
            "resolveOptions": {},
            "factoryMeta": {},
            "warnings": [],
            "errors": [],
            "buildMeta": {
              "providedExports": true
            },
            "buildInfo": {
              "temporaryProvidedExports": false
            },
            "reasons": [
              {
                "module": "[Circular ~.0.entryModule]",
                "dependency": "[Circular ~.0.entryModule.dependencies.0]",
                "_chunks": null
              }
            ],
            "_chunks": {},
            "id": "?7044",
            "index": 5,
            "index2": 3,
            "depth": 1,
            "issuer": "[Circular ~.0.entryModule]",
            "prefetched": false,
            "built": false,
            "used": null,
            "usedExports": null,
            "optimizationBailout": [],
            "useSourceMap": false,
            "_source": null,
            "_identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/a.css",
            "_identifierIndex": 0,
            "content": "body {\n    background: red;\n    font-size: 12px;\n}",
            "media": ""
          },
          "weak": false,
          "optional": false,
          "identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/a.css",
          "identifierIndex": 0,
          "content": "body {\n    background: red;\n    font-size: 12px;\n}",
          "media": "",
          "context": "/Users/huruji/Documents/webpac-plugin-test"
        }
      ],
      "blocks": [],
      "variables": [],
      "type": "javascript/auto",
      "context": "/Users/huruji/Documents/webpac-plugin-test",
      "debugId": 1002,
      "hash": "76982c2fb2ab3938a545c4a825da5089",
      "renderedHash": "76982c2fb2ab3938a545",
      "resolveOptions": {},
      "factoryMeta": {},
      "warnings": [],
      "errors": [],
      "buildMeta": {
        "providedExports": true
      },
      "buildInfo": {
        "cacheable": true,
        "fileDependencies": {},
        "contextDependencies": {},
        "temporaryProvidedExports": false
      },
      "reasons": [
        {
          "module": null,
          "dependency": {
            "module": "[Circular ~.0.entryModule]",
            "weak": false,
            "optional": false,
            "loc": {
              "name": "a"
            },
            "request": "/Users/huruji/Documents/webpac-plugin-test/a.css",
            "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.css"
          },
          "_chunks": null
        },
        {
          "module": {
            "dependencies": [
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": -1,
                    "column": 0
                  },
                  "end": {
                    "line": -1,
                    "column": 0
                  },
                  "index": -3
                },
                "originModule": "[Circular ~.0.entryModule.reasons.1.module]"
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": -1,
                    "column": 0
                  },
                  "end": {
                    "line": -1,
                    "column": 0
                  },
                  "index": -2
                },
                "originModule": "[Circular ~.0.entryModule.reasons.1.module]"
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": 1,
                    "column": 0
                  },
                  "end": {
                    "line": 1,
                    "column": 20
                  }
                },
                "expression": "",
                "range": [
                  0,
                  20
                ]
              },
              {
                "module": {
                  "dependencies": [
                    {
                      "module": null,
                      "weak": false,
                      "optional": false,
                      "loc": {
                        "start": {
                          "line": -1,
                          "column": 0
                        },
                        "end": {
                          "line": -1,
                          "column": 0
                        },
                        "index": -3
                      },
                      "originModule": "[Circular ~.0.entryModule.reasons.1.module.dependencies.3.module]"
                    },
                    {
                      "module": null,
                      "weak": false,
                      "optional": false,
                      "loc": {
                        "start": {
                          "line": -1,
                          "column": 0
                        },
                        "end": {
                          "line": -1,
                          "column": 0
                        },
                        "index": -2
                      },
                      "originModule": "[Circular ~.0.entryModule.reasons.1.module.dependencies.3.module]"
                    },
                    {
                      "module": null,
                      "weak": false,
                      "optional": false,
                      "loc": {
                        "index": -1
                      },
                      "range": [
                        15,
                        18
                      ],
                      "rangeStatement": [
                        0,
                        19
                      ]
                    },
                    {
                      "module": null,
                      "weak": false,
                      "optional": false,
                      "loc": {
                        "index": -1
                      },
                      "originModule": "[Circular ~.0.entryModule.reasons.1.module.dependencies.3.module]",
                      "range": [
                        15,
                        18
                      ],
                      "rangeStatement": [
                        0,
                        19
                      ],
                      "prefix": ""
                    }
                  ],
                  "blocks": [],
                  "variables": [],
                  "type": "javascript/auto",
                  "context": "/Users/huruji/Documents/webpac-plugin-test",
                  "debugId": 1011,
                  "hash": "8d6445f4bd840f5894be1a891f1c8ceb",
                  "renderedHash": "8d6445f4bd840f5894be",
                  "resolveOptions": {},
                  "factoryMeta": {},
                  "warnings": [],
                  "errors": [],
                  "buildMeta": {
                    "exportsType": "namespace",
                    "providedExports": [
                      "default"
                    ]
                  },
                  "buildInfo": {
                    "cacheable": true,
                    "fileDependencies": {},
                    "contextDependencies": {},
                    "strict": true,
                    "exportsArgument": "__webpack_exports__",
                    "temporaryProvidedExports": false
                  },
                  "reasons": [
                    {
                      "module": "[Circular ~.0.entryModule.reasons.1.module]",
                      "dependency": "[Circular ~.0.entryModule.reasons.1.module.dependencies.3]",
                      "_chunks": null
                    },
                    {
                      "module": "[Circular ~.0.entryModule.reasons.1.module]",
                      "dependency": {
                        "module": "[Circular ~.0.entryModule.reasons.1.module.dependencies.3.module]",
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "start": {
                            "line": 2,
                            "column": 12
                          },
                          "end": {
                            "line": 2,
                            "column": 13
                          }
                        },
                        "request": "./a",
                        "userRequest": "./a",
                        "originModule": "[Circular ~.0.entryModule.reasons.1.module]",
                        "sourceOrder": 1,
                        "parserScope": {
                          "importVarMap": {}
                        },
                        "id": "default",
                        "name": "a",
                        "range": [
                          33,
                          34
                        ],
                        "strictExportPresence": false,
                        "namespaceObjectAsContext": false,
                        "directImport": true,
                        "shorthand": false
                      },
                      "_chunks": null
                    }
                  ],
                  "_chunks": {
                    "_lastActiveSortFn": null
                  },
                  "id": "./a.js",
                  "index": 1,
                  "index2": 0,
                  "depth": 1,
                  "issuer": "[Circular ~.0.entryModule.reasons.1.module]",
                  "prefetched": false,
                  "built": true,
                  "used": null,
                  "usedExports": null,
                  "optimizationBailout": [],
                  "useSourceMap": false,
                  "_source": {
                    "_value": "export default 123;",
                    "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js"
                  },
                  "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js",
                  "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.js",
                  "rawRequest": "./a",
                  "binary": false,
                  "parser": {
                    "_pluginCompat": {
                      "_args": [
                        "options"
                      ],
                      "taps": [
                        {
                          "type": "sync",
                          "name": "Parser"
                        },
                        {
                          "type": "sync",
                          "name": "Tapable camelCase",
                          "stage": 100
                        },
                        {
                          "type": "sync",
                          "name": "Tapable this.hooks",
                          "stage": 200
                        }
                      ],
                      "interceptors": []
                    },
                    "hooks": {
                      "evaluateTypeof": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluate": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateIdentifier": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateDefinedIdentifier": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateCallExpressionMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "statement": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [],
                        "interceptors": [],
                        "_x": []
                      },
                      "statementIf": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "label": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "import": {
                        "_args": [
                          "statement",
                          "source"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "importSpecifier": {
                        "_args": [
                          "statement",
                          "source",
                          "exportName",
                          "identifierName"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "export": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "exportImport": {
                        "_args": [
                          "statement",
                          "source"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportDeclaration": {
                        "_args": [
                          "statement",
                          "declaration"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportExpression": {
                        "_args": [
                          "statement",
                          "declaration"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "exportSpecifier": {
                        "_args": [
                          "statement",
                          "identifierName",
                          "exportName",
                          "index"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportImportSpecifier": {
                        "_args": [
                          "statement",
                          "source",
                          "identifierName",
                          "exportName",
                          "index"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "varDeclaration": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationLet": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationConst": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationVar": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "canRename": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "rename": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "assigned": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "assign": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "typeof": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "importCall": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ImportParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "call": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "callAnyMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "new": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expression": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expressionAnyMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expressionConditionalOperator": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "expressionLogicalOperator": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "program": {
                        "_args": [
                          "ast",
                          "comments"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyDetectionParserPlugin"
                          },
                          {
                            "type": "sync",
                            "name": "UseStrictPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null,
                          null
                        ]
                      },
                      "hotAcceptCallback": {
                        "_args": [
                          "expression",
                          "requests"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "hotAcceptWithoutCallback": {
                        "_args": [
                          "expression",
                          "requests"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      }
                    },
                    "options": {},
                    "sourceType": "auto"
                  },
                  "generator": {},
                  "resource": "/Users/huruji/Documents/webpac-plugin-test/a.js",
                  "loaders": [
                    {
                      "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
                    }
                  ],
                  "error": null,
                  "_buildHash": "9f7bf84b36cbd1e6ccc0fe4b5ce8f1f3",
                  "buildTimestamp": 1550127876994,
                  "_cachedSources": {},
                  "lineToLine": false,
                  "_lastSuccessfulBuildMeta": {
                    "exportsType": "namespace",
                    "providedExports": [
                      "default"
                    ]
                  },
                  "_ast": null
                },
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": 1,
                    "column": 0
                  },
                  "end": {
                    "line": 1,
                    "column": 20
                  }
                },
                "request": "./a",
                "userRequest": "./a",
                "originModule": "[Circular ~.0.entryModule.reasons.1.module]",
                "sourceOrder": 1,
                "parserScope": {
                  "importVarMap": {}
                }
              },
              {
                "module": {
                  "dependencies": [
                    {
                      "module": null,
                      "weak": false,
                      "optional": false,
                      "loc": {
                        "start": {
                          "line": -1,
                          "column": 0
                        },
                        "end": {
                          "line": -1,
                          "column": 0
                        },
                        "index": -3
                      },
                      "originModule": "[Circular ~.0.entryModule.reasons.1.module.dependencies.4.module]"
                    },
                    {
                      "module": null,
                      "weak": false,
                      "optional": false,
                      "loc": {
                        "start": {
                          "line": -1,
                          "column": 0
                        },
                        "end": {
                          "line": -1,
                          "column": 0
                        },
                        "index": -2
                      },
                      "originModule": "[Circular ~.0.entryModule.reasons.1.module.dependencies.4.module]"
                    },
                    {
                      "module": null,
                      "weak": false,
                      "optional": false,
                      "loc": {
                        "index": -1
                      },
                      "range": [
                        15,
                        18
                      ],
                      "rangeStatement": [
                        0,
                        19
                      ]
                    },
                    {
                      "module": null,
                      "weak": false,
                      "optional": false,
                      "loc": {
                        "index": -1
                      },
                      "originModule": "[Circular ~.0.entryModule.reasons.1.module.dependencies.4.module]",
                      "range": [
                        15,
                        18
                      ],
                      "rangeStatement": [
                        0,
                        19
                      ],
                      "prefix": ""
                    }
                  ],
                  "blocks": [],
                  "variables": [],
                  "type": "javascript/auto",
                  "context": "/Users/huruji/Documents/webpac-plugin-test",
                  "debugId": 1011,
                  "hash": "8d6445f4bd840f5894be1a891f1c8ceb",
                  "renderedHash": "8d6445f4bd840f5894be",
                  "resolveOptions": {},
                  "factoryMeta": {},
                  "warnings": [],
                  "errors": [],
                  "buildMeta": {
                    "exportsType": "namespace",
                    "providedExports": [
                      "default"
                    ]
                  },
                  "buildInfo": {
                    "cacheable": true,
                    "fileDependencies": {},
                    "contextDependencies": {},
                    "strict": true,
                    "exportsArgument": "__webpack_exports__",
                    "temporaryProvidedExports": false
                  },
                  "reasons": [
                    {
                      "module": "[Circular ~.0.entryModule.reasons.1.module]",
                      "dependency": {
                        "module": "[Circular ~.0.entryModule.reasons.1.module.dependencies.4.module]",
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "start": {
                            "line": 1,
                            "column": 0
                          },
                          "end": {
                            "line": 1,
                            "column": 20
                          }
                        },
                        "request": "./a",
                        "userRequest": "./a",
                        "originModule": "[Circular ~.0.entryModule.reasons.1.module]",
                        "sourceOrder": 1,
                        "parserScope": {
                          "importVarMap": {}
                        }
                      },
                      "_chunks": null
                    },
                    {
                      "module": "[Circular ~.0.entryModule.reasons.1.module]",
                      "dependency": "[Circular ~.0.entryModule.reasons.1.module.dependencies.4]",
                      "_chunks": null
                    }
                  ],
                  "_chunks": {
                    "_lastActiveSortFn": null
                  },
                  "id": "./a.js",
                  "index": 1,
                  "index2": 0,
                  "depth": 1,
                  "issuer": "[Circular ~.0.entryModule.reasons.1.module]",
                  "prefetched": false,
                  "built": true,
                  "used": null,
                  "usedExports": null,
                  "optimizationBailout": [],
                  "useSourceMap": false,
                  "_source": {
                    "_value": "export default 123;",
                    "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js"
                  },
                  "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js",
                  "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.js",
                  "rawRequest": "./a",
                  "binary": false,
                  "parser": {
                    "_pluginCompat": {
                      "_args": [
                        "options"
                      ],
                      "taps": [
                        {
                          "type": "sync",
                          "name": "Parser"
                        },
                        {
                          "type": "sync",
                          "name": "Tapable camelCase",
                          "stage": 100
                        },
                        {
                          "type": "sync",
                          "name": "Tapable this.hooks",
                          "stage": 200
                        }
                      ],
                      "interceptors": []
                    },
                    "hooks": {
                      "evaluateTypeof": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluate": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateIdentifier": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateDefinedIdentifier": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateCallExpressionMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "statement": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [],
                        "interceptors": [],
                        "_x": []
                      },
                      "statementIf": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "label": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "import": {
                        "_args": [
                          "statement",
                          "source"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "importSpecifier": {
                        "_args": [
                          "statement",
                          "source",
                          "exportName",
                          "identifierName"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "export": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "exportImport": {
                        "_args": [
                          "statement",
                          "source"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportDeclaration": {
                        "_args": [
                          "statement",
                          "declaration"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportExpression": {
                        "_args": [
                          "statement",
                          "declaration"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "exportSpecifier": {
                        "_args": [
                          "statement",
                          "identifierName",
                          "exportName",
                          "index"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportImportSpecifier": {
                        "_args": [
                          "statement",
                          "source",
                          "identifierName",
                          "exportName",
                          "index"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "varDeclaration": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationLet": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationConst": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationVar": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "canRename": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "rename": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "assigned": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "assign": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "typeof": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "importCall": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ImportParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "call": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "callAnyMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "new": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expression": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expressionAnyMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expressionConditionalOperator": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "expressionLogicalOperator": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "program": {
                        "_args": [
                          "ast",
                          "comments"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyDetectionParserPlugin"
                          },
                          {
                            "type": "sync",
                            "name": "UseStrictPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null,
                          null
                        ]
                      },
                      "hotAcceptCallback": {
                        "_args": [
                          "expression",
                          "requests"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "hotAcceptWithoutCallback": {
                        "_args": [
                          "expression",
                          "requests"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      }
                    },
                    "options": {},
                    "sourceType": "auto"
                  },
                  "generator": {},
                  "resource": "/Users/huruji/Documents/webpac-plugin-test/a.js",
                  "loaders": [
                    {
                      "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
                    }
                  ],
                  "error": null,
                  "_buildHash": "9f7bf84b36cbd1e6ccc0fe4b5ce8f1f3",
                  "buildTimestamp": 1550127876994,
                  "_cachedSources": {},
                  "lineToLine": false,
                  "_lastSuccessfulBuildMeta": {
                    "exportsType": "namespace",
                    "providedExports": [
                      "default"
                    ]
                  },
                  "_ast": null
                },
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": 2,
                    "column": 12
                  },
                  "end": {
                    "line": 2,
                    "column": 13
                  }
                },
                "request": "./a",
                "userRequest": "./a",
                "originModule": "[Circular ~.0.entryModule.reasons.1.module]",
                "sourceOrder": 1,
                "parserScope": {
                  "importVarMap": {}
                },
                "id": "default",
                "name": "a",
                "range": [
                  33,
                  34
                ],
                "strictExportPresence": false,
                "namespaceObjectAsContext": false,
                "directImport": true,
                "shorthand": false
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": 3,
                    "column": 0
                  },
                  "end": {
                    "line": 3,
                    "column": 20
                  }
                },
                "expression": "",
                "range": [
                  37,
                  57
                ]
              },
              {
                "module": {
                  "dependencies": [
                    {
                      "module": {
                        "dependencies": [],
                        "blocks": [],
                        "variables": [],
                        "type": "css/mini-extract",
                        "context": "/Users/huruji/Documents/webpac-plugin-test",
                        "debugId": 1014,
                        "hash": "f1f0adaf2dc816a4823cf341693f18c8",
                        "renderedHash": "f1f0adaf2dc816a4823c",
                        "resolveOptions": {},
                        "factoryMeta": {},
                        "warnings": [],
                        "errors": [],
                        "buildMeta": {
                          "providedExports": true
                        },
                        "buildInfo": {
                          "temporaryProvidedExports": false
                        },
                        "reasons": [
                          {
                            "module": "[Circular ~.0.entryModule.reasons.1.module.dependencies.6.module]",
                            "dependency": "[Circular ~.0.entryModule.reasons.1.module.dependencies.6.module.dependencies.0]",
                            "_chunks": null
                          }
                        ],
                        "_chunks": {
                          "_lastActiveSortFn": null
                        },
                        "id": "?751f",
                        "index": 3,
                        "index2": 1,
                        "depth": 2,
                        "issuer": "[Circular ~.0.entryModule.reasons.1.module.dependencies.6.module]",
                        "prefetched": false,
                        "built": false,
                        "used": null,
                        "usedExports": null,
                        "optimizationBailout": [],
                        "useSourceMap": false,
                        "_source": null,
                        "_identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
                        "_identifierIndex": 0,
                        "content": "body {\n    background: #fff\n}",
                        "media": ""
                      },
                      "weak": false,
                      "optional": false,
                      "identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
                      "identifierIndex": 0,
                      "content": "body {\n    background: #fff\n}",
                      "media": "",
                      "context": "/Users/huruji/Documents/webpac-plugin-test"
                    }
                  ],
                  "blocks": [],
                  "variables": [],
                  "type": "javascript/auto",
                  "context": "/Users/huruji/Documents/webpac-plugin-test",
                  "debugId": 1006,
                  "hash": "c04c289c0b95239614aa06bb2a310fcc",
                  "renderedHash": "c04c289c0b95239614aa",
                  "resolveOptions": {},
                  "factoryMeta": {},
                  "warnings": [],
                  "errors": [],
                  "buildMeta": {
                    "providedExports": true
                  },
                  "buildInfo": {
                    "cacheable": true,
                    "fileDependencies": {},
                    "contextDependencies": {},
                    "temporaryProvidedExports": false
                  },
                  "reasons": [
                    {
                      "module": "[Circular ~.0.entryModule.reasons.1.module]",
                      "dependency": "[Circular ~.0.entryModule.reasons.1.module.dependencies.6]",
                      "_chunks": null
                    }
                  ],
                  "_chunks": {
                    "_lastActiveSortFn": null
                  },
                  "id": "./main.css",
                  "index": 2,
                  "index2": 2,
                  "depth": 1,
                  "issuer": "[Circular ~.0.entryModule.reasons.1.module]",
                  "prefetched": false,
                  "built": true,
                  "used": null,
                  "usedExports": null,
                  "optimizationBailout": [],
                  "useSourceMap": false,
                  "_source": {
                    "_value": "// extracted by mini-css-extract-plugin",
                    "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css"
                  },
                  "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
                  "userRequest": "/Users/huruji/Documents/webpac-plugin-test/main.css",
                  "rawRequest": "./main.css",
                  "binary": false,
                  "parser": {
                    "_pluginCompat": {
                      "_args": [
                        "options"
                      ],
                      "taps": [
                        {
                          "type": "sync",
                          "name": "Parser"
                        },
                        {
                          "type": "sync",
                          "name": "Tapable camelCase",
                          "stage": 100
                        },
                        {
                          "type": "sync",
                          "name": "Tapable this.hooks",
                          "stage": 200
                        }
                      ],
                      "interceptors": []
                    },
                    "hooks": {
                      "evaluateTypeof": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluate": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateIdentifier": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateDefinedIdentifier": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "evaluateCallExpressionMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "statement": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [],
                        "interceptors": [],
                        "_x": []
                      },
                      "statementIf": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "label": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "import": {
                        "_args": [
                          "statement",
                          "source"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "importSpecifier": {
                        "_args": [
                          "statement",
                          "source",
                          "exportName",
                          "identifierName"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "export": {
                        "_args": [
                          "statement"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "exportImport": {
                        "_args": [
                          "statement",
                          "source"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportDeclaration": {
                        "_args": [
                          "statement",
                          "declaration"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportExpression": {
                        "_args": [
                          "statement",
                          "declaration"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null
                        ]
                      },
                      "exportSpecifier": {
                        "_args": [
                          "statement",
                          "identifierName",
                          "exportName",
                          "index"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "exportImportSpecifier": {
                        "_args": [
                          "statement",
                          "source",
                          "identifierName",
                          "exportName",
                          "index"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyExportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "varDeclaration": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationLet": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationConst": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "varDeclarationVar": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "canRename": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "rename": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "assigned": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "assign": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "typeof": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "importCall": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ImportParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "call": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "callAnyMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "new": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expression": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expressionAnyMember": {
                        "_map": {},
                        "_interceptors": []
                      },
                      "expressionConditionalOperator": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "expressionLogicalOperator": {
                        "_args": [
                          "expression"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "ConstPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "program": {
                        "_args": [
                          "ast",
                          "comments"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyDetectionParserPlugin"
                          },
                          {
                            "type": "sync",
                            "name": "UseStrictPlugin"
                          }
                        ],
                        "interceptors": [],
                        "_x": [
                          null,
                          null
                        ]
                      },
                      "hotAcceptCallback": {
                        "_args": [
                          "expression",
                          "requests"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      },
                      "hotAcceptWithoutCallback": {
                        "_args": [
                          "expression",
                          "requests"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "HarmonyImportDependencyParserPlugin"
                          }
                        ],
                        "interceptors": []
                      }
                    },
                    "options": {},
                    "sourceType": "auto"
                  },
                  "generator": {},
                  "resource": "/Users/huruji/Documents/webpac-plugin-test/main.css",
                  "loaders": [
                    {
                      "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js"
                    },
                    {
                      "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js"
                    }
                  ],
                  "error": null,
                  "_buildHash": "5a855d6f954c109e28c85c504bd0c1d3",
                  "buildTimestamp": 1550127876985,
                  "_cachedSources": {},
                  "lineToLine": false,
                  "_lastSuccessfulBuildMeta": {
                    "providedExports": true
                  },
                  "_ast": null
                },
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": 3,
                    "column": 0
                  },
                  "end": {
                    "line": 3,
                    "column": 20
                  }
                },
                "request": "./main.css",
                "userRequest": "./main.css",
                "originModule": "[Circular ~.0.entryModule.reasons.1.module]",
                "sourceOrder": 2,
                "parserScope": {
                  "importVarMap": {}
                }
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": 4,
                    "column": 0
                  },
                  "end": {
                    "line": 4,
                    "column": 17
                  }
                },
                "expression": "",
                "range": [
                  58,
                  75
                ]
              },
              {
                "module": "[Circular ~.0.entryModule]",
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": 4,
                    "column": 0
                  },
                  "end": {
                    "line": 4,
                    "column": 17
                  }
                },
                "request": "./a.css",
                "userRequest": "./a.css",
                "originModule": "[Circular ~.0.entryModule.reasons.1.module]",
                "sourceOrder": 3,
                "parserScope": {
                  "importVarMap": {}
                }
              }
            ],
            "blocks": [],
            "variables": [],
            "type": "javascript/auto",
            "context": "/Users/huruji/Documents/webpac-plugin-test",
            "debugId": 1004,
            "hash": "3e3ed907ea63c1b8ec000db711efd148",
            "renderedHash": "3e3ed907ea63c1b8ec00",
            "resolveOptions": {},
            "factoryMeta": {},
            "warnings": [],
            "errors": [],
            "buildMeta": {
              "exportsType": "namespace",
              "providedExports": []
            },
            "buildInfo": {
              "cacheable": true,
              "fileDependencies": {},
              "contextDependencies": {},
              "strict": true,
              "exportsArgument": "__webpack_exports__",
              "temporaryProvidedExports": false
            },
            "reasons": [
              {
                "module": null,
                "dependency": {
                  "module": "[Circular ~.0.entryModule.reasons.1.module]",
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "name": "index"
                  },
                  "request": "/Users/huruji/Documents/webpac-plugin-test/index.js",
                  "userRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js"
                },
                "_chunks": null
              }
            ],
            "_chunks": {
              "_lastActiveSortFn": null
            },
            "id": "./index.js",
            "index": 0,
            "index2": 5,
            "depth": 0,
            "issuer": null,
            "prefetched": false,
            "built": true,
            "used": null,
            "usedExports": null,
            "optimizationBailout": [],
            "useSourceMap": false,
            "_source": {
              "_value": "import a from './a';\nconsole.log(a);\nimport './main.css';\nimport './a.css';",
              "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/index.js"
            },
            "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/index.js",
            "userRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js",
            "rawRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js",
            "binary": false,
            "parser": {
              "_pluginCompat": {
                "_args": [
                  "options"
                ],
                "taps": [
                  {
                    "type": "sync",
                    "name": "Parser"
                  },
                  {
                    "type": "sync",
                    "name": "Tapable camelCase",
                    "stage": 100
                  },
                  {
                    "type": "sync",
                    "name": "Tapable this.hooks",
                    "stage": 200
                  }
                ],
                "interceptors": []
              },
              "hooks": {
                "evaluateTypeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluate": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateDefinedIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateCallExpressionMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "statement": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [],
                  "interceptors": [],
                  "_x": []
                },
                "statementIf": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "label": {
                  "_map": {},
                  "_interceptors": []
                },
                "import": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "importSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "exportName",
                    "identifierName"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "export": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportImport": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportDeclaration": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportExpression": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportSpecifier": {
                  "_args": [
                    "statement",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportImportSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "varDeclaration": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationLet": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationConst": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationVar": {
                  "_map": {},
                  "_interceptors": []
                },
                "canRename": {
                  "_map": {},
                  "_interceptors": []
                },
                "rename": {
                  "_map": {},
                  "_interceptors": []
                },
                "assigned": {
                  "_map": {},
                  "_interceptors": []
                },
                "assign": {
                  "_map": {},
                  "_interceptors": []
                },
                "typeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "importCall": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ImportParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "call": {
                  "_map": {},
                  "_interceptors": []
                },
                "callAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "new": {
                  "_map": {},
                  "_interceptors": []
                },
                "expression": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionConditionalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "expressionLogicalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "program": {
                  "_args": [
                    "ast",
                    "comments"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyDetectionParserPlugin"
                    },
                    {
                      "type": "sync",
                      "name": "UseStrictPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null,
                    null
                  ]
                },
                "hotAcceptCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "hotAcceptWithoutCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                }
              },
              "options": {},
              "sourceType": "auto"
            },
            "generator": {},
            "resource": "/Users/huruji/Documents/webpac-plugin-test/index.js",
            "loaders": [
              {
                "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
              }
            ],
            "error": null,
            "_buildHash": "d1beb4573e61d4768d808e9b8460f47c",
            "buildTimestamp": 1550127874127,
            "_cachedSources": {},
            "lineToLine": false,
            "_lastSuccessfulBuildMeta": {
              "exportsType": "namespace",
              "providedExports": []
            },
            "_ast": null
          },
          "dependency": {
            "module": "[Circular ~.0.entryModule]",
            "weak": false,
            "optional": false,
            "loc": {
              "start": {
                "line": 4,
                "column": 0
              },
              "end": {
                "line": 4,
                "column": 17
              }
            },
            "request": "./a.css",
            "userRequest": "./a.css",
            "originModule": {
              "dependencies": [
                {
                  "module": null,
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": -1,
                      "column": 0
                    },
                    "end": {
                      "line": -1,
                      "column": 0
                    },
                    "index": -3
                  },
                  "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]"
                },
                {
                  "module": null,
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": -1,
                      "column": 0
                    },
                    "end": {
                      "line": -1,
                      "column": 0
                    },
                    "index": -2
                  },
                  "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]"
                },
                {
                  "module": null,
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": 1,
                      "column": 0
                    },
                    "end": {
                      "line": 1,
                      "column": 20
                    }
                  },
                  "expression": "",
                  "range": [
                    0,
                    20
                  ]
                },
                {
                  "module": {
                    "dependencies": [
                      {
                        "module": null,
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "start": {
                            "line": -1,
                            "column": 0
                          },
                          "end": {
                            "line": -1,
                            "column": 0
                          },
                          "index": -3
                        },
                        "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.3.module]"
                      },
                      {
                        "module": null,
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "start": {
                            "line": -1,
                            "column": 0
                          },
                          "end": {
                            "line": -1,
                            "column": 0
                          },
                          "index": -2
                        },
                        "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.3.module]"
                      },
                      {
                        "module": null,
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "index": -1
                        },
                        "range": [
                          15,
                          18
                        ],
                        "rangeStatement": [
                          0,
                          19
                        ]
                      },
                      {
                        "module": null,
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "index": -1
                        },
                        "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.3.module]",
                        "range": [
                          15,
                          18
                        ],
                        "rangeStatement": [
                          0,
                          19
                        ],
                        "prefix": ""
                      }
                    ],
                    "blocks": [],
                    "variables": [],
                    "type": "javascript/auto",
                    "context": "/Users/huruji/Documents/webpac-plugin-test",
                    "debugId": 1011,
                    "hash": "8d6445f4bd840f5894be1a891f1c8ceb",
                    "renderedHash": "8d6445f4bd840f5894be",
                    "resolveOptions": {},
                    "factoryMeta": {},
                    "warnings": [],
                    "errors": [],
                    "buildMeta": {
                      "exportsType": "namespace",
                      "providedExports": [
                        "default"
                      ]
                    },
                    "buildInfo": {
                      "cacheable": true,
                      "fileDependencies": {},
                      "contextDependencies": {},
                      "strict": true,
                      "exportsArgument": "__webpack_exports__",
                      "temporaryProvidedExports": false
                    },
                    "reasons": [
                      {
                        "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                        "dependency": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.3]",
                        "_chunks": null
                      },
                      {
                        "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                        "dependency": {
                          "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.3.module]",
                          "weak": false,
                          "optional": false,
                          "loc": {
                            "start": {
                              "line": 2,
                              "column": 12
                            },
                            "end": {
                              "line": 2,
                              "column": 13
                            }
                          },
                          "request": "./a",
                          "userRequest": "./a",
                          "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                          "sourceOrder": 1,
                          "parserScope": {
                            "importVarMap": {}
                          },
                          "id": "default",
                          "name": "a",
                          "range": [
                            33,
                            34
                          ],
                          "strictExportPresence": false,
                          "namespaceObjectAsContext": false,
                          "directImport": true,
                          "shorthand": false
                        },
                        "_chunks": null
                      }
                    ],
                    "_chunks": {
                      "_lastActiveSortFn": null
                    },
                    "id": "./a.js",
                    "index": 1,
                    "index2": 0,
                    "depth": 1,
                    "issuer": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                    "prefetched": false,
                    "built": true,
                    "used": null,
                    "usedExports": null,
                    "optimizationBailout": [],
                    "useSourceMap": false,
                    "_source": {
                      "_value": "export default 123;",
                      "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js"
                    },
                    "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js",
                    "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.js",
                    "rawRequest": "./a",
                    "binary": false,
                    "parser": {
                      "_pluginCompat": {
                        "_args": [
                          "options"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "Parser"
                          },
                          {
                            "type": "sync",
                            "name": "Tapable camelCase",
                            "stage": 100
                          },
                          {
                            "type": "sync",
                            "name": "Tapable this.hooks",
                            "stage": 200
                          }
                        ],
                        "interceptors": []
                      },
                      "hooks": {
                        "evaluateTypeof": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluate": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateIdentifier": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateDefinedIdentifier": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateCallExpressionMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "statement": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [],
                          "interceptors": [],
                          "_x": []
                        },
                        "statementIf": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "label": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "import": {
                          "_args": [
                            "statement",
                            "source"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "importSpecifier": {
                          "_args": [
                            "statement",
                            "source",
                            "exportName",
                            "identifierName"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "export": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "exportImport": {
                          "_args": [
                            "statement",
                            "source"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportDeclaration": {
                          "_args": [
                            "statement",
                            "declaration"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportExpression": {
                          "_args": [
                            "statement",
                            "declaration"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "exportSpecifier": {
                          "_args": [
                            "statement",
                            "identifierName",
                            "exportName",
                            "index"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportImportSpecifier": {
                          "_args": [
                            "statement",
                            "source",
                            "identifierName",
                            "exportName",
                            "index"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "varDeclaration": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationLet": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationConst": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationVar": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "canRename": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "rename": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "assigned": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "assign": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "typeof": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "importCall": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ImportParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "call": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "callAnyMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "new": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expression": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expressionAnyMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expressionConditionalOperator": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "expressionLogicalOperator": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "program": {
                          "_args": [
                            "ast",
                            "comments"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyDetectionParserPlugin"
                            },
                            {
                              "type": "sync",
                              "name": "UseStrictPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null,
                            null
                          ]
                        },
                        "hotAcceptCallback": {
                          "_args": [
                            "expression",
                            "requests"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "hotAcceptWithoutCallback": {
                          "_args": [
                            "expression",
                            "requests"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        }
                      },
                      "options": {},
                      "sourceType": "auto"
                    },
                    "generator": {},
                    "resource": "/Users/huruji/Documents/webpac-plugin-test/a.js",
                    "loaders": [
                      {
                        "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
                      }
                    ],
                    "error": null,
                    "_buildHash": "9f7bf84b36cbd1e6ccc0fe4b5ce8f1f3",
                    "buildTimestamp": 1550127876994,
                    "_cachedSources": {},
                    "lineToLine": false,
                    "_lastSuccessfulBuildMeta": {
                      "exportsType": "namespace",
                      "providedExports": [
                        "default"
                      ]
                    },
                    "_ast": null
                  },
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": 1,
                      "column": 0
                    },
                    "end": {
                      "line": 1,
                      "column": 20
                    }
                  },
                  "request": "./a",
                  "userRequest": "./a",
                  "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                  "sourceOrder": 1,
                  "parserScope": {
                    "importVarMap": {}
                  }
                },
                {
                  "module": {
                    "dependencies": [
                      {
                        "module": null,
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "start": {
                            "line": -1,
                            "column": 0
                          },
                          "end": {
                            "line": -1,
                            "column": 0
                          },
                          "index": -3
                        },
                        "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.4.module]"
                      },
                      {
                        "module": null,
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "start": {
                            "line": -1,
                            "column": 0
                          },
                          "end": {
                            "line": -1,
                            "column": 0
                          },
                          "index": -2
                        },
                        "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.4.module]"
                      },
                      {
                        "module": null,
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "index": -1
                        },
                        "range": [
                          15,
                          18
                        ],
                        "rangeStatement": [
                          0,
                          19
                        ]
                      },
                      {
                        "module": null,
                        "weak": false,
                        "optional": false,
                        "loc": {
                          "index": -1
                        },
                        "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.4.module]",
                        "range": [
                          15,
                          18
                        ],
                        "rangeStatement": [
                          0,
                          19
                        ],
                        "prefix": ""
                      }
                    ],
                    "blocks": [],
                    "variables": [],
                    "type": "javascript/auto",
                    "context": "/Users/huruji/Documents/webpac-plugin-test",
                    "debugId": 1011,
                    "hash": "8d6445f4bd840f5894be1a891f1c8ceb",
                    "renderedHash": "8d6445f4bd840f5894be",
                    "resolveOptions": {},
                    "factoryMeta": {},
                    "warnings": [],
                    "errors": [],
                    "buildMeta": {
                      "exportsType": "namespace",
                      "providedExports": [
                        "default"
                      ]
                    },
                    "buildInfo": {
                      "cacheable": true,
                      "fileDependencies": {},
                      "contextDependencies": {},
                      "strict": true,
                      "exportsArgument": "__webpack_exports__",
                      "temporaryProvidedExports": false
                    },
                    "reasons": [
                      {
                        "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                        "dependency": {
                          "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.4.module]",
                          "weak": false,
                          "optional": false,
                          "loc": {
                            "start": {
                              "line": 1,
                              "column": 0
                            },
                            "end": {
                              "line": 1,
                              "column": 20
                            }
                          },
                          "request": "./a",
                          "userRequest": "./a",
                          "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                          "sourceOrder": 1,
                          "parserScope": {
                            "importVarMap": {}
                          }
                        },
                        "_chunks": null
                      },
                      {
                        "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                        "dependency": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.4]",
                        "_chunks": null
                      }
                    ],
                    "_chunks": {
                      "_lastActiveSortFn": null
                    },
                    "id": "./a.js",
                    "index": 1,
                    "index2": 0,
                    "depth": 1,
                    "issuer": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                    "prefetched": false,
                    "built": true,
                    "used": null,
                    "usedExports": null,
                    "optimizationBailout": [],
                    "useSourceMap": false,
                    "_source": {
                      "_value": "export default 123;",
                      "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js"
                    },
                    "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js",
                    "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.js",
                    "rawRequest": "./a",
                    "binary": false,
                    "parser": {
                      "_pluginCompat": {
                        "_args": [
                          "options"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "Parser"
                          },
                          {
                            "type": "sync",
                            "name": "Tapable camelCase",
                            "stage": 100
                          },
                          {
                            "type": "sync",
                            "name": "Tapable this.hooks",
                            "stage": 200
                          }
                        ],
                        "interceptors": []
                      },
                      "hooks": {
                        "evaluateTypeof": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluate": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateIdentifier": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateDefinedIdentifier": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateCallExpressionMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "statement": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [],
                          "interceptors": [],
                          "_x": []
                        },
                        "statementIf": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "label": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "import": {
                          "_args": [
                            "statement",
                            "source"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "importSpecifier": {
                          "_args": [
                            "statement",
                            "source",
                            "exportName",
                            "identifierName"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "export": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "exportImport": {
                          "_args": [
                            "statement",
                            "source"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportDeclaration": {
                          "_args": [
                            "statement",
                            "declaration"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportExpression": {
                          "_args": [
                            "statement",
                            "declaration"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "exportSpecifier": {
                          "_args": [
                            "statement",
                            "identifierName",
                            "exportName",
                            "index"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportImportSpecifier": {
                          "_args": [
                            "statement",
                            "source",
                            "identifierName",
                            "exportName",
                            "index"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "varDeclaration": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationLet": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationConst": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationVar": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "canRename": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "rename": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "assigned": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "assign": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "typeof": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "importCall": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ImportParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "call": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "callAnyMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "new": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expression": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expressionAnyMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expressionConditionalOperator": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "expressionLogicalOperator": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "program": {
                          "_args": [
                            "ast",
                            "comments"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyDetectionParserPlugin"
                            },
                            {
                              "type": "sync",
                              "name": "UseStrictPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null,
                            null
                          ]
                        },
                        "hotAcceptCallback": {
                          "_args": [
                            "expression",
                            "requests"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "hotAcceptWithoutCallback": {
                          "_args": [
                            "expression",
                            "requests"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        }
                      },
                      "options": {},
                      "sourceType": "auto"
                    },
                    "generator": {},
                    "resource": "/Users/huruji/Documents/webpac-plugin-test/a.js",
                    "loaders": [
                      {
                        "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
                      }
                    ],
                    "error": null,
                    "_buildHash": "9f7bf84b36cbd1e6ccc0fe4b5ce8f1f3",
                    "buildTimestamp": 1550127876994,
                    "_cachedSources": {},
                    "lineToLine": false,
                    "_lastSuccessfulBuildMeta": {
                      "exportsType": "namespace",
                      "providedExports": [
                        "default"
                      ]
                    },
                    "_ast": null
                  },
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": 2,
                      "column": 12
                    },
                    "end": {
                      "line": 2,
                      "column": 13
                    }
                  },
                  "request": "./a",
                  "userRequest": "./a",
                  "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                  "sourceOrder": 1,
                  "parserScope": {
                    "importVarMap": {}
                  },
                  "id": "default",
                  "name": "a",
                  "range": [
                    33,
                    34
                  ],
                  "strictExportPresence": false,
                  "namespaceObjectAsContext": false,
                  "directImport": true,
                  "shorthand": false
                },
                {
                  "module": null,
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": 3,
                      "column": 0
                    },
                    "end": {
                      "line": 3,
                      "column": 20
                    }
                  },
                  "expression": "",
                  "range": [
                    37,
                    57
                  ]
                },
                {
                  "module": {
                    "dependencies": [
                      {
                        "module": {
                          "dependencies": [],
                          "blocks": [],
                          "variables": [],
                          "type": "css/mini-extract",
                          "context": "/Users/huruji/Documents/webpac-plugin-test",
                          "debugId": 1014,
                          "hash": "f1f0adaf2dc816a4823cf341693f18c8",
                          "renderedHash": "f1f0adaf2dc816a4823c",
                          "resolveOptions": {},
                          "factoryMeta": {},
                          "warnings": [],
                          "errors": [],
                          "buildMeta": {
                            "providedExports": true
                          },
                          "buildInfo": {
                            "temporaryProvidedExports": false
                          },
                          "reasons": [
                            {
                              "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.6.module]",
                              "dependency": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.6.module.dependencies.0]",
                              "_chunks": null
                            }
                          ],
                          "_chunks": {
                            "_lastActiveSortFn": null
                          },
                          "id": "?751f",
                          "index": 3,
                          "index2": 1,
                          "depth": 2,
                          "issuer": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.6.module]",
                          "prefetched": false,
                          "built": false,
                          "used": null,
                          "usedExports": null,
                          "optimizationBailout": [],
                          "useSourceMap": false,
                          "_source": null,
                          "_identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
                          "_identifierIndex": 0,
                          "content": "body {\n    background: #fff\n}",
                          "media": ""
                        },
                        "weak": false,
                        "optional": false,
                        "identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
                        "identifierIndex": 0,
                        "content": "body {\n    background: #fff\n}",
                        "media": "",
                        "context": "/Users/huruji/Documents/webpac-plugin-test"
                      }
                    ],
                    "blocks": [],
                    "variables": [],
                    "type": "javascript/auto",
                    "context": "/Users/huruji/Documents/webpac-plugin-test",
                    "debugId": 1006,
                    "hash": "c04c289c0b95239614aa06bb2a310fcc",
                    "renderedHash": "c04c289c0b95239614aa",
                    "resolveOptions": {},
                    "factoryMeta": {},
                    "warnings": [],
                    "errors": [],
                    "buildMeta": {
                      "providedExports": true
                    },
                    "buildInfo": {
                      "cacheable": true,
                      "fileDependencies": {},
                      "contextDependencies": {},
                      "temporaryProvidedExports": false
                    },
                    "reasons": [
                      {
                        "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                        "dependency": "[Circular ~.0.entryModule.reasons.1.dependency.originModule.dependencies.6]",
                        "_chunks": null
                      }
                    ],
                    "_chunks": {
                      "_lastActiveSortFn": null
                    },
                    "id": "./main.css",
                    "index": 2,
                    "index2": 2,
                    "depth": 1,
                    "issuer": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                    "prefetched": false,
                    "built": true,
                    "used": null,
                    "usedExports": null,
                    "optimizationBailout": [],
                    "useSourceMap": false,
                    "_source": {
                      "_value": "// extracted by mini-css-extract-plugin",
                      "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css"
                    },
                    "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
                    "userRequest": "/Users/huruji/Documents/webpac-plugin-test/main.css",
                    "rawRequest": "./main.css",
                    "binary": false,
                    "parser": {
                      "_pluginCompat": {
                        "_args": [
                          "options"
                        ],
                        "taps": [
                          {
                            "type": "sync",
                            "name": "Parser"
                          },
                          {
                            "type": "sync",
                            "name": "Tapable camelCase",
                            "stage": 100
                          },
                          {
                            "type": "sync",
                            "name": "Tapable this.hooks",
                            "stage": 200
                          }
                        ],
                        "interceptors": []
                      },
                      "hooks": {
                        "evaluateTypeof": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluate": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateIdentifier": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateDefinedIdentifier": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "evaluateCallExpressionMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "statement": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [],
                          "interceptors": [],
                          "_x": []
                        },
                        "statementIf": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "label": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "import": {
                          "_args": [
                            "statement",
                            "source"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "importSpecifier": {
                          "_args": [
                            "statement",
                            "source",
                            "exportName",
                            "identifierName"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "export": {
                          "_args": [
                            "statement"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "exportImport": {
                          "_args": [
                            "statement",
                            "source"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportDeclaration": {
                          "_args": [
                            "statement",
                            "declaration"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportExpression": {
                          "_args": [
                            "statement",
                            "declaration"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null
                          ]
                        },
                        "exportSpecifier": {
                          "_args": [
                            "statement",
                            "identifierName",
                            "exportName",
                            "index"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "exportImportSpecifier": {
                          "_args": [
                            "statement",
                            "source",
                            "identifierName",
                            "exportName",
                            "index"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyExportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "varDeclaration": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationLet": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationConst": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "varDeclarationVar": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "canRename": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "rename": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "assigned": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "assign": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "typeof": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "importCall": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ImportParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "call": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "callAnyMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "new": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expression": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expressionAnyMember": {
                          "_map": {},
                          "_interceptors": []
                        },
                        "expressionConditionalOperator": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "expressionLogicalOperator": {
                          "_args": [
                            "expression"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "ConstPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "program": {
                          "_args": [
                            "ast",
                            "comments"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyDetectionParserPlugin"
                            },
                            {
                              "type": "sync",
                              "name": "UseStrictPlugin"
                            }
                          ],
                          "interceptors": [],
                          "_x": [
                            null,
                            null
                          ]
                        },
                        "hotAcceptCallback": {
                          "_args": [
                            "expression",
                            "requests"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        },
                        "hotAcceptWithoutCallback": {
                          "_args": [
                            "expression",
                            "requests"
                          ],
                          "taps": [
                            {
                              "type": "sync",
                              "name": "HarmonyImportDependencyParserPlugin"
                            }
                          ],
                          "interceptors": []
                        }
                      },
                      "options": {},
                      "sourceType": "auto"
                    },
                    "generator": {},
                    "resource": "/Users/huruji/Documents/webpac-plugin-test/main.css",
                    "loaders": [
                      {
                        "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js"
                      },
                      {
                        "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js"
                      }
                    ],
                    "error": null,
                    "_buildHash": "5a855d6f954c109e28c85c504bd0c1d3",
                    "buildTimestamp": 1550127876985,
                    "_cachedSources": {},
                    "lineToLine": false,
                    "_lastSuccessfulBuildMeta": {
                      "providedExports": true
                    },
                    "_ast": null
                  },
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": 3,
                      "column": 0
                    },
                    "end": {
                      "line": 3,
                      "column": 20
                    }
                  },
                  "request": "./main.css",
                  "userRequest": "./main.css",
                  "originModule": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                  "sourceOrder": 2,
                  "parserScope": {
                    "importVarMap": {}
                  }
                },
                {
                  "module": null,
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": 4,
                      "column": 0
                    },
                    "end": {
                      "line": 4,
                      "column": 17
                    }
                  },
                  "expression": "",
                  "range": [
                    58,
                    75
                  ]
                },
                "[Circular ~.0.entryModule.reasons.1.dependency]"
              ],
              "blocks": [],
              "variables": [],
              "type": "javascript/auto",
              "context": "/Users/huruji/Documents/webpac-plugin-test",
              "debugId": 1004,
              "hash": "3e3ed907ea63c1b8ec000db711efd148",
              "renderedHash": "3e3ed907ea63c1b8ec00",
              "resolveOptions": {},
              "factoryMeta": {},
              "warnings": [],
              "errors": [],
              "buildMeta": {
                "exportsType": "namespace",
                "providedExports": []
              },
              "buildInfo": {
                "cacheable": true,
                "fileDependencies": {},
                "contextDependencies": {},
                "strict": true,
                "exportsArgument": "__webpack_exports__",
                "temporaryProvidedExports": false
              },
              "reasons": [
                {
                  "module": null,
                  "dependency": {
                    "module": "[Circular ~.0.entryModule.reasons.1.dependency.originModule]",
                    "weak": false,
                    "optional": false,
                    "loc": {
                      "name": "index"
                    },
                    "request": "/Users/huruji/Documents/webpac-plugin-test/index.js",
                    "userRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js"
                  },
                  "_chunks": null
                }
              ],
              "_chunks": {
                "_lastActiveSortFn": null
              },
              "id": "./index.js",
              "index": 0,
              "index2": 5,
              "depth": 0,
              "issuer": null,
              "prefetched": false,
              "built": true,
              "used": null,
              "usedExports": null,
              "optimizationBailout": [],
              "useSourceMap": false,
              "_source": {
                "_value": "import a from './a';\nconsole.log(a);\nimport './main.css';\nimport './a.css';",
                "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/index.js"
              },
              "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/index.js",
              "userRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js",
              "rawRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js",
              "binary": false,
              "parser": {
                "_pluginCompat": {
                  "_args": [
                    "options"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "Parser"
                    },
                    {
                      "type": "sync",
                      "name": "Tapable camelCase",
                      "stage": 100
                    },
                    {
                      "type": "sync",
                      "name": "Tapable this.hooks",
                      "stage": 200
                    }
                  ],
                  "interceptors": []
                },
                "hooks": {
                  "evaluateTypeof": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "evaluate": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "evaluateIdentifier": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "evaluateDefinedIdentifier": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "evaluateCallExpressionMember": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "statement": {
                    "_args": [
                      "statement"
                    ],
                    "taps": [],
                    "interceptors": [],
                    "_x": []
                  },
                  "statementIf": {
                    "_args": [
                      "statement"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "ConstPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "label": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "import": {
                    "_args": [
                      "statement",
                      "source"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyImportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": [],
                    "_x": [
                      null
                    ]
                  },
                  "importSpecifier": {
                    "_args": [
                      "statement",
                      "source",
                      "exportName",
                      "identifierName"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyImportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": [],
                    "_x": [
                      null
                    ]
                  },
                  "export": {
                    "_args": [
                      "statement"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyExportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": [],
                    "_x": [
                      null
                    ]
                  },
                  "exportImport": {
                    "_args": [
                      "statement",
                      "source"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyExportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "exportDeclaration": {
                    "_args": [
                      "statement",
                      "declaration"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyExportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "exportExpression": {
                    "_args": [
                      "statement",
                      "declaration"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyExportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": [],
                    "_x": [
                      null
                    ]
                  },
                  "exportSpecifier": {
                    "_args": [
                      "statement",
                      "identifierName",
                      "exportName",
                      "index"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyExportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "exportImportSpecifier": {
                    "_args": [
                      "statement",
                      "source",
                      "identifierName",
                      "exportName",
                      "index"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyExportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "varDeclaration": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "varDeclarationLet": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "varDeclarationConst": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "varDeclarationVar": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "canRename": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "rename": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "assigned": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "assign": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "typeof": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "importCall": {
                    "_args": [
                      "expression"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "ImportParserPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "call": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "callAnyMember": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "new": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "expression": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "expressionAnyMember": {
                    "_map": {},
                    "_interceptors": []
                  },
                  "expressionConditionalOperator": {
                    "_args": [
                      "expression"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "ConstPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "expressionLogicalOperator": {
                    "_args": [
                      "expression"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "ConstPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "program": {
                    "_args": [
                      "ast",
                      "comments"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyDetectionParserPlugin"
                      },
                      {
                        "type": "sync",
                        "name": "UseStrictPlugin"
                      }
                    ],
                    "interceptors": [],
                    "_x": [
                      null,
                      null
                    ]
                  },
                  "hotAcceptCallback": {
                    "_args": [
                      "expression",
                      "requests"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyImportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": []
                  },
                  "hotAcceptWithoutCallback": {
                    "_args": [
                      "expression",
                      "requests"
                    ],
                    "taps": [
                      {
                        "type": "sync",
                        "name": "HarmonyImportDependencyParserPlugin"
                      }
                    ],
                    "interceptors": []
                  }
                },
                "options": {},
                "sourceType": "auto"
              },
              "generator": {},
              "resource": "/Users/huruji/Documents/webpac-plugin-test/index.js",
              "loaders": [
                {
                  "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
                }
              ],
              "error": null,
              "_buildHash": "d1beb4573e61d4768d808e9b8460f47c",
              "buildTimestamp": 1550127874127,
              "_cachedSources": {},
              "lineToLine": false,
              "_lastSuccessfulBuildMeta": {
                "exportsType": "namespace",
                "providedExports": []
              },
              "_ast": null
            },
            "sourceOrder": 3,
            "parserScope": {
              "importVarMap": {}
            }
          },
          "_chunks": null
        }
      ],
      "_chunks": {},
      "id": "./a.css",
      "index": 4,
      "index2": 4,
      "depth": 0,
      "issuer": null,
      "prefetched": false,
      "built": true,
      "used": null,
      "usedExports": null,
      "optimizationBailout": [],
      "useSourceMap": false,
      "_source": {
        "_value": "// extracted by mini-css-extract-plugin",
        "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/a.css"
      },
      "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/a.css",
      "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.css",
      "rawRequest": "/Users/huruji/Documents/webpac-plugin-test/a.css",
      "binary": false,
      "parser": {
        "_pluginCompat": {
          "_args": [
            "options"
          ],
          "taps": [
            {
              "type": "sync",
              "name": "Parser"
            },
            {
              "type": "sync",
              "name": "Tapable camelCase",
              "stage": 100
            },
            {
              "type": "sync",
              "name": "Tapable this.hooks",
              "stage": 200
            }
          ],
          "interceptors": []
        },
        "hooks": {
          "evaluateTypeof": {
            "_map": {},
            "_interceptors": []
          },
          "evaluate": {
            "_map": {},
            "_interceptors": []
          },
          "evaluateIdentifier": {
            "_map": {},
            "_interceptors": []
          },
          "evaluateDefinedIdentifier": {
            "_map": {},
            "_interceptors": []
          },
          "evaluateCallExpressionMember": {
            "_map": {},
            "_interceptors": []
          },
          "statement": {
            "_args": [
              "statement"
            ],
            "taps": [],
            "interceptors": [],
            "_x": []
          },
          "statementIf": {
            "_args": [
              "statement"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "ConstPlugin"
              }
            ],
            "interceptors": []
          },
          "label": {
            "_map": {},
            "_interceptors": []
          },
          "import": {
            "_args": [
              "statement",
              "source"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyImportDependencyParserPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null
            ]
          },
          "importSpecifier": {
            "_args": [
              "statement",
              "source",
              "exportName",
              "identifierName"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyImportDependencyParserPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null
            ]
          },
          "export": {
            "_args": [
              "statement"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null
            ]
          },
          "exportImport": {
            "_args": [
              "statement",
              "source"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "exportDeclaration": {
            "_args": [
              "statement",
              "declaration"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "exportExpression": {
            "_args": [
              "statement",
              "declaration"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null
            ]
          },
          "exportSpecifier": {
            "_args": [
              "statement",
              "identifierName",
              "exportName",
              "index"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "exportImportSpecifier": {
            "_args": [
              "statement",
              "source",
              "identifierName",
              "exportName",
              "index"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "varDeclaration": {
            "_map": {},
            "_interceptors": []
          },
          "varDeclarationLet": {
            "_map": {},
            "_interceptors": []
          },
          "varDeclarationConst": {
            "_map": {},
            "_interceptors": []
          },
          "varDeclarationVar": {
            "_map": {},
            "_interceptors": []
          },
          "canRename": {
            "_map": {},
            "_interceptors": []
          },
          "rename": {
            "_map": {},
            "_interceptors": []
          },
          "assigned": {
            "_map": {},
            "_interceptors": []
          },
          "assign": {
            "_map": {},
            "_interceptors": []
          },
          "typeof": {
            "_map": {},
            "_interceptors": []
          },
          "importCall": {
            "_args": [
              "expression"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "ImportParserPlugin"
              }
            ],
            "interceptors": []
          },
          "call": {
            "_map": {},
            "_interceptors": []
          },
          "callAnyMember": {
            "_map": {},
            "_interceptors": []
          },
          "new": {
            "_map": {},
            "_interceptors": []
          },
          "expression": {
            "_map": {},
            "_interceptors": []
          },
          "expressionAnyMember": {
            "_map": {},
            "_interceptors": []
          },
          "expressionConditionalOperator": {
            "_args": [
              "expression"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "ConstPlugin"
              }
            ],
            "interceptors": []
          },
          "expressionLogicalOperator": {
            "_args": [
              "expression"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "ConstPlugin"
              }
            ],
            "interceptors": []
          },
          "program": {
            "_args": [
              "ast",
              "comments"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyDetectionParserPlugin"
              },
              {
                "type": "sync",
                "name": "UseStrictPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null,
              null
            ]
          },
          "hotAcceptCallback": {
            "_args": [
              "expression",
              "requests"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyImportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "hotAcceptWithoutCallback": {
            "_args": [
              "expression",
              "requests"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyImportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          }
        },
        "options": {},
        "sourceType": "auto"
      },
      "generator": {},
      "resource": "/Users/huruji/Documents/webpac-plugin-test/a.css",
      "loaders": [
        {
          "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js"
        },
        {
          "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js"
        }
      ],
      "error": null,
      "_buildHash": "5a855d6f954c109e28c85c504bd0c1d3",
      "buildTimestamp": 1550127873318,
      "_cachedSources": {},
      "lineToLine": false,
      "_lastSuccessfulBuildMeta": {
        "providedExports": true
      },
      "_ast": null
    },
    "_modules": {
      "_cache": {}
    },
    "_groups": {
      "_lastActiveSortFn": null
    },
    "files": [
      "a.css",
      "a.5c50884f7299ede45e0f.js"
    ],
    "rendered": true,
    "hash": "bc1c39b8321f86e52b1449d53249a399",
    "contentHash": {
      "css/mini-extract": "08cf1f522d9d27c31e91",
      "javascript": "b2c599d85656b924374d"
    },
    "renderedHash": "bc1c39b8321f86e52b14",
    "extraAsync": false
  },
  {
    "id": "index",
    "ids": [
      "index"
    ],
    "debugId": 1003,
    "name": "index",
    "preventIntegration": false,
    "entryModule": {
      "dependencies": [
        {
          "module": null,
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": -1,
              "column": 0
            },
            "end": {
              "line": -1,
              "column": 0
            },
            "index": -3
          },
          "originModule": "[Circular ~.1.entryModule]"
        },
        {
          "module": null,
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": -1,
              "column": 0
            },
            "end": {
              "line": -1,
              "column": 0
            },
            "index": -2
          },
          "originModule": "[Circular ~.1.entryModule]"
        },
        {
          "module": null,
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 1,
              "column": 20
            }
          },
          "expression": "",
          "range": [
            0,
            20
          ]
        },
        {
          "module": {
            "dependencies": [
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": -1,
                    "column": 0
                  },
                  "end": {
                    "line": -1,
                    "column": 0
                  },
                  "index": -3
                },
                "originModule": "[Circular ~.1.entryModule.dependencies.3.module]"
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": -1,
                    "column": 0
                  },
                  "end": {
                    "line": -1,
                    "column": 0
                  },
                  "index": -2
                },
                "originModule": "[Circular ~.1.entryModule.dependencies.3.module]"
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "index": -1
                },
                "range": [
                  15,
                  18
                ],
                "rangeStatement": [
                  0,
                  19
                ]
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "index": -1
                },
                "originModule": "[Circular ~.1.entryModule.dependencies.3.module]",
                "range": [
                  15,
                  18
                ],
                "rangeStatement": [
                  0,
                  19
                ],
                "prefix": ""
              }
            ],
            "blocks": [],
            "variables": [],
            "type": "javascript/auto",
            "context": "/Users/huruji/Documents/webpac-plugin-test",
            "debugId": 1011,
            "hash": "8d6445f4bd840f5894be1a891f1c8ceb",
            "renderedHash": "8d6445f4bd840f5894be",
            "resolveOptions": {},
            "factoryMeta": {},
            "warnings": [],
            "errors": [],
            "buildMeta": {
              "exportsType": "namespace",
              "providedExports": [
                "default"
              ]
            },
            "buildInfo": {
              "cacheable": true,
              "fileDependencies": {},
              "contextDependencies": {},
              "strict": true,
              "exportsArgument": "__webpack_exports__",
              "temporaryProvidedExports": false
            },
            "reasons": [
              {
                "module": "[Circular ~.1.entryModule]",
                "dependency": "[Circular ~.1.entryModule.dependencies.3]",
                "_chunks": null
              },
              {
                "module": "[Circular ~.1.entryModule]",
                "dependency": {
                  "module": "[Circular ~.1.entryModule.dependencies.3.module]",
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": 2,
                      "column": 12
                    },
                    "end": {
                      "line": 2,
                      "column": 13
                    }
                  },
                  "request": "./a",
                  "userRequest": "./a",
                  "originModule": "[Circular ~.1.entryModule]",
                  "sourceOrder": 1,
                  "parserScope": {
                    "importVarMap": {}
                  },
                  "id": "default",
                  "name": "a",
                  "range": [
                    33,
                    34
                  ],
                  "strictExportPresence": false,
                  "namespaceObjectAsContext": false,
                  "directImport": true,
                  "shorthand": false
                },
                "_chunks": null
              }
            ],
            "_chunks": {
              "_lastActiveSortFn": null
            },
            "id": "./a.js",
            "index": 1,
            "index2": 0,
            "depth": 1,
            "issuer": "[Circular ~.1.entryModule]",
            "prefetched": false,
            "built": true,
            "used": null,
            "usedExports": null,
            "optimizationBailout": [],
            "useSourceMap": false,
            "_source": {
              "_value": "export default 123;",
              "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js"
            },
            "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js",
            "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.js",
            "rawRequest": "./a",
            "binary": false,
            "parser": {
              "_pluginCompat": {
                "_args": [
                  "options"
                ],
                "taps": [
                  {
                    "type": "sync",
                    "name": "Parser"
                  },
                  {
                    "type": "sync",
                    "name": "Tapable camelCase",
                    "stage": 100
                  },
                  {
                    "type": "sync",
                    "name": "Tapable this.hooks",
                    "stage": 200
                  }
                ],
                "interceptors": []
              },
              "hooks": {
                "evaluateTypeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluate": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateDefinedIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateCallExpressionMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "statement": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [],
                  "interceptors": [],
                  "_x": []
                },
                "statementIf": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "label": {
                  "_map": {},
                  "_interceptors": []
                },
                "import": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "importSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "exportName",
                    "identifierName"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "export": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportImport": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportDeclaration": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportExpression": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportSpecifier": {
                  "_args": [
                    "statement",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportImportSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "varDeclaration": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationLet": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationConst": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationVar": {
                  "_map": {},
                  "_interceptors": []
                },
                "canRename": {
                  "_map": {},
                  "_interceptors": []
                },
                "rename": {
                  "_map": {},
                  "_interceptors": []
                },
                "assigned": {
                  "_map": {},
                  "_interceptors": []
                },
                "assign": {
                  "_map": {},
                  "_interceptors": []
                },
                "typeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "importCall": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ImportParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "call": {
                  "_map": {},
                  "_interceptors": []
                },
                "callAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "new": {
                  "_map": {},
                  "_interceptors": []
                },
                "expression": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionConditionalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "expressionLogicalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "program": {
                  "_args": [
                    "ast",
                    "comments"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyDetectionParserPlugin"
                    },
                    {
                      "type": "sync",
                      "name": "UseStrictPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null,
                    null
                  ]
                },
                "hotAcceptCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "hotAcceptWithoutCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                }
              },
              "options": {},
              "sourceType": "auto"
            },
            "generator": {},
            "resource": "/Users/huruji/Documents/webpac-plugin-test/a.js",
            "loaders": [
              {
                "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
              }
            ],
            "error": null,
            "_buildHash": "9f7bf84b36cbd1e6ccc0fe4b5ce8f1f3",
            "buildTimestamp": 1550127876994,
            "_cachedSources": {},
            "lineToLine": false,
            "_lastSuccessfulBuildMeta": {
              "exportsType": "namespace",
              "providedExports": [
                "default"
              ]
            },
            "_ast": null
          },
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": 1,
              "column": 0
            },
            "end": {
              "line": 1,
              "column": 20
            }
          },
          "request": "./a",
          "userRequest": "./a",
          "originModule": "[Circular ~.1.entryModule]",
          "sourceOrder": 1,
          "parserScope": {
            "importVarMap": {}
          }
        },
        {
          "module": {
            "dependencies": [
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": -1,
                    "column": 0
                  },
                  "end": {
                    "line": -1,
                    "column": 0
                  },
                  "index": -3
                },
                "originModule": "[Circular ~.1.entryModule.dependencies.4.module]"
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "start": {
                    "line": -1,
                    "column": 0
                  },
                  "end": {
                    "line": -1,
                    "column": 0
                  },
                  "index": -2
                },
                "originModule": "[Circular ~.1.entryModule.dependencies.4.module]"
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "index": -1
                },
                "range": [
                  15,
                  18
                ],
                "rangeStatement": [
                  0,
                  19
                ]
              },
              {
                "module": null,
                "weak": false,
                "optional": false,
                "loc": {
                  "index": -1
                },
                "originModule": "[Circular ~.1.entryModule.dependencies.4.module]",
                "range": [
                  15,
                  18
                ],
                "rangeStatement": [
                  0,
                  19
                ],
                "prefix": ""
              }
            ],
            "blocks": [],
            "variables": [],
            "type": "javascript/auto",
            "context": "/Users/huruji/Documents/webpac-plugin-test",
            "debugId": 1011,
            "hash": "8d6445f4bd840f5894be1a891f1c8ceb",
            "renderedHash": "8d6445f4bd840f5894be",
            "resolveOptions": {},
            "factoryMeta": {},
            "warnings": [],
            "errors": [],
            "buildMeta": {
              "exportsType": "namespace",
              "providedExports": [
                "default"
              ]
            },
            "buildInfo": {
              "cacheable": true,
              "fileDependencies": {},
              "contextDependencies": {},
              "strict": true,
              "exportsArgument": "__webpack_exports__",
              "temporaryProvidedExports": false
            },
            "reasons": [
              {
                "module": "[Circular ~.1.entryModule]",
                "dependency": {
                  "module": "[Circular ~.1.entryModule.dependencies.4.module]",
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "start": {
                      "line": 1,
                      "column": 0
                    },
                    "end": {
                      "line": 1,
                      "column": 20
                    }
                  },
                  "request": "./a",
                  "userRequest": "./a",
                  "originModule": "[Circular ~.1.entryModule]",
                  "sourceOrder": 1,
                  "parserScope": {
                    "importVarMap": {}
                  }
                },
                "_chunks": null
              },
              {
                "module": "[Circular ~.1.entryModule]",
                "dependency": "[Circular ~.1.entryModule.dependencies.4]",
                "_chunks": null
              }
            ],
            "_chunks": {
              "_lastActiveSortFn": null
            },
            "id": "./a.js",
            "index": 1,
            "index2": 0,
            "depth": 1,
            "issuer": "[Circular ~.1.entryModule]",
            "prefetched": false,
            "built": true,
            "used": null,
            "usedExports": null,
            "optimizationBailout": [],
            "useSourceMap": false,
            "_source": {
              "_value": "export default 123;",
              "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js"
            },
            "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/a.js",
            "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.js",
            "rawRequest": "./a",
            "binary": false,
            "parser": {
              "_pluginCompat": {
                "_args": [
                  "options"
                ],
                "taps": [
                  {
                    "type": "sync",
                    "name": "Parser"
                  },
                  {
                    "type": "sync",
                    "name": "Tapable camelCase",
                    "stage": 100
                  },
                  {
                    "type": "sync",
                    "name": "Tapable this.hooks",
                    "stage": 200
                  }
                ],
                "interceptors": []
              },
              "hooks": {
                "evaluateTypeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluate": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateDefinedIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateCallExpressionMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "statement": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [],
                  "interceptors": [],
                  "_x": []
                },
                "statementIf": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "label": {
                  "_map": {},
                  "_interceptors": []
                },
                "import": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "importSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "exportName",
                    "identifierName"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "export": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportImport": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportDeclaration": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportExpression": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportSpecifier": {
                  "_args": [
                    "statement",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportImportSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "varDeclaration": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationLet": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationConst": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationVar": {
                  "_map": {},
                  "_interceptors": []
                },
                "canRename": {
                  "_map": {},
                  "_interceptors": []
                },
                "rename": {
                  "_map": {},
                  "_interceptors": []
                },
                "assigned": {
                  "_map": {},
                  "_interceptors": []
                },
                "assign": {
                  "_map": {},
                  "_interceptors": []
                },
                "typeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "importCall": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ImportParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "call": {
                  "_map": {},
                  "_interceptors": []
                },
                "callAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "new": {
                  "_map": {},
                  "_interceptors": []
                },
                "expression": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionConditionalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "expressionLogicalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "program": {
                  "_args": [
                    "ast",
                    "comments"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyDetectionParserPlugin"
                    },
                    {
                      "type": "sync",
                      "name": "UseStrictPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null,
                    null
                  ]
                },
                "hotAcceptCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "hotAcceptWithoutCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                }
              },
              "options": {},
              "sourceType": "auto"
            },
            "generator": {},
            "resource": "/Users/huruji/Documents/webpac-plugin-test/a.js",
            "loaders": [
              {
                "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
              }
            ],
            "error": null,
            "_buildHash": "9f7bf84b36cbd1e6ccc0fe4b5ce8f1f3",
            "buildTimestamp": 1550127876994,
            "_cachedSources": {},
            "lineToLine": false,
            "_lastSuccessfulBuildMeta": {
              "exportsType": "namespace",
              "providedExports": [
                "default"
              ]
            },
            "_ast": null
          },
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": 2,
              "column": 12
            },
            "end": {
              "line": 2,
              "column": 13
            }
          },
          "request": "./a",
          "userRequest": "./a",
          "originModule": "[Circular ~.1.entryModule]",
          "sourceOrder": 1,
          "parserScope": {
            "importVarMap": {}
          },
          "id": "default",
          "name": "a",
          "range": [
            33,
            34
          ],
          "strictExportPresence": false,
          "namespaceObjectAsContext": false,
          "directImport": true,
          "shorthand": false
        },
        {
          "module": null,
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": 3,
              "column": 0
            },
            "end": {
              "line": 3,
              "column": 20
            }
          },
          "expression": "",
          "range": [
            37,
            57
          ]
        },
        {
          "module": {
            "dependencies": [
              {
                "module": {
                  "dependencies": [],
                  "blocks": [],
                  "variables": [],
                  "type": "css/mini-extract",
                  "context": "/Users/huruji/Documents/webpac-plugin-test",
                  "debugId": 1014,
                  "hash": "f1f0adaf2dc816a4823cf341693f18c8",
                  "renderedHash": "f1f0adaf2dc816a4823c",
                  "resolveOptions": {},
                  "factoryMeta": {},
                  "warnings": [],
                  "errors": [],
                  "buildMeta": {
                    "providedExports": true
                  },
                  "buildInfo": {
                    "temporaryProvidedExports": false
                  },
                  "reasons": [
                    {
                      "module": "[Circular ~.1.entryModule.dependencies.6.module]",
                      "dependency": "[Circular ~.1.entryModule.dependencies.6.module.dependencies.0]",
                      "_chunks": null
                    }
                  ],
                  "_chunks": {
                    "_lastActiveSortFn": null
                  },
                  "id": "?751f",
                  "index": 3,
                  "index2": 1,
                  "depth": 2,
                  "issuer": "[Circular ~.1.entryModule.dependencies.6.module]",
                  "prefetched": false,
                  "built": false,
                  "used": null,
                  "usedExports": null,
                  "optimizationBailout": [],
                  "useSourceMap": false,
                  "_source": null,
                  "_identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
                  "_identifierIndex": 0,
                  "content": "body {\n    background: #fff\n}",
                  "media": ""
                },
                "weak": false,
                "optional": false,
                "identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
                "identifierIndex": 0,
                "content": "body {\n    background: #fff\n}",
                "media": "",
                "context": "/Users/huruji/Documents/webpac-plugin-test"
              }
            ],
            "blocks": [],
            "variables": [],
            "type": "javascript/auto",
            "context": "/Users/huruji/Documents/webpac-plugin-test",
            "debugId": 1006,
            "hash": "c04c289c0b95239614aa06bb2a310fcc",
            "renderedHash": "c04c289c0b95239614aa",
            "resolveOptions": {},
            "factoryMeta": {},
            "warnings": [],
            "errors": [],
            "buildMeta": {
              "providedExports": true
            },
            "buildInfo": {
              "cacheable": true,
              "fileDependencies": {},
              "contextDependencies": {},
              "temporaryProvidedExports": false
            },
            "reasons": [
              {
                "module": "[Circular ~.1.entryModule]",
                "dependency": "[Circular ~.1.entryModule.dependencies.6]",
                "_chunks": null
              }
            ],
            "_chunks": {
              "_lastActiveSortFn": null
            },
            "id": "./main.css",
            "index": 2,
            "index2": 2,
            "depth": 1,
            "issuer": "[Circular ~.1.entryModule]",
            "prefetched": false,
            "built": true,
            "used": null,
            "usedExports": null,
            "optimizationBailout": [],
            "useSourceMap": false,
            "_source": {
              "_value": "// extracted by mini-css-extract-plugin",
              "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css"
            },
            "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/main.css",
            "userRequest": "/Users/huruji/Documents/webpac-plugin-test/main.css",
            "rawRequest": "./main.css",
            "binary": false,
            "parser": {
              "_pluginCompat": {
                "_args": [
                  "options"
                ],
                "taps": [
                  {
                    "type": "sync",
                    "name": "Parser"
                  },
                  {
                    "type": "sync",
                    "name": "Tapable camelCase",
                    "stage": 100
                  },
                  {
                    "type": "sync",
                    "name": "Tapable this.hooks",
                    "stage": 200
                  }
                ],
                "interceptors": []
              },
              "hooks": {
                "evaluateTypeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluate": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateDefinedIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateCallExpressionMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "statement": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [],
                  "interceptors": [],
                  "_x": []
                },
                "statementIf": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "label": {
                  "_map": {},
                  "_interceptors": []
                },
                "import": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "importSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "exportName",
                    "identifierName"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "export": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportImport": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportDeclaration": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportExpression": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportSpecifier": {
                  "_args": [
                    "statement",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportImportSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "varDeclaration": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationLet": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationConst": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationVar": {
                  "_map": {},
                  "_interceptors": []
                },
                "canRename": {
                  "_map": {},
                  "_interceptors": []
                },
                "rename": {
                  "_map": {},
                  "_interceptors": []
                },
                "assigned": {
                  "_map": {},
                  "_interceptors": []
                },
                "assign": {
                  "_map": {},
                  "_interceptors": []
                },
                "typeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "importCall": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ImportParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "call": {
                  "_map": {},
                  "_interceptors": []
                },
                "callAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "new": {
                  "_map": {},
                  "_interceptors": []
                },
                "expression": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionConditionalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "expressionLogicalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "program": {
                  "_args": [
                    "ast",
                    "comments"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyDetectionParserPlugin"
                    },
                    {
                      "type": "sync",
                      "name": "UseStrictPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null,
                    null
                  ]
                },
                "hotAcceptCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "hotAcceptWithoutCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                }
              },
              "options": {},
              "sourceType": "auto"
            },
            "generator": {},
            "resource": "/Users/huruji/Documents/webpac-plugin-test/main.css",
            "loaders": [
              {
                "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js"
              },
              {
                "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js"
              }
            ],
            "error": null,
            "_buildHash": "5a855d6f954c109e28c85c504bd0c1d3",
            "buildTimestamp": 1550127876985,
            "_cachedSources": {},
            "lineToLine": false,
            "_lastSuccessfulBuildMeta": {
              "providedExports": true
            },
            "_ast": null
          },
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": 3,
              "column": 0
            },
            "end": {
              "line": 3,
              "column": 20
            }
          },
          "request": "./main.css",
          "userRequest": "./main.css",
          "originModule": "[Circular ~.1.entryModule]",
          "sourceOrder": 2,
          "parserScope": {
            "importVarMap": {}
          }
        },
        {
          "module": null,
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": 4,
              "column": 0
            },
            "end": {
              "line": 4,
              "column": 17
            }
          },
          "expression": "",
          "range": [
            58,
            75
          ]
        },
        {
          "module": {
            "dependencies": [
              {
                "module": {
                  "dependencies": [],
                  "blocks": [],
                  "variables": [],
                  "type": "css/mini-extract",
                  "context": "/Users/huruji/Documents/webpac-plugin-test",
                  "debugId": 1012,
                  "hash": "08cf1f522d9d27c31e912691f4b31127",
                  "renderedHash": "08cf1f522d9d27c31e91",
                  "resolveOptions": {},
                  "factoryMeta": {},
                  "warnings": [],
                  "errors": [],
                  "buildMeta": {
                    "providedExports": true
                  },
                  "buildInfo": {
                    "temporaryProvidedExports": false
                  },
                  "reasons": [
                    {
                      "module": "[Circular ~.1.entryModule.dependencies.8.module]",
                      "dependency": "[Circular ~.1.entryModule.dependencies.8.module.dependencies.0]",
                      "_chunks": null
                    }
                  ],
                  "_chunks": {},
                  "id": "?7044",
                  "index": 5,
                  "index2": 3,
                  "depth": 1,
                  "issuer": "[Circular ~.1.entryModule.dependencies.8.module]",
                  "prefetched": false,
                  "built": false,
                  "used": null,
                  "usedExports": null,
                  "optimizationBailout": [],
                  "useSourceMap": false,
                  "_source": null,
                  "_identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/a.css",
                  "_identifierIndex": 0,
                  "content": "body {\n    background: red;\n    font-size: 12px;\n}",
                  "media": ""
                },
                "weak": false,
                "optional": false,
                "identifier": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/a.css",
                "identifierIndex": 0,
                "content": "body {\n    background: red;\n    font-size: 12px;\n}",
                "media": "",
                "context": "/Users/huruji/Documents/webpac-plugin-test"
              }
            ],
            "blocks": [],
            "variables": [],
            "type": "javascript/auto",
            "context": "/Users/huruji/Documents/webpac-plugin-test",
            "debugId": 1002,
            "hash": "76982c2fb2ab3938a545c4a825da5089",
            "renderedHash": "76982c2fb2ab3938a545",
            "resolveOptions": {},
            "factoryMeta": {},
            "warnings": [],
            "errors": [],
            "buildMeta": {
              "providedExports": true
            },
            "buildInfo": {
              "cacheable": true,
              "fileDependencies": {},
              "contextDependencies": {},
              "temporaryProvidedExports": false
            },
            "reasons": [
              {
                "module": null,
                "dependency": {
                  "module": "[Circular ~.1.entryModule.dependencies.8.module]",
                  "weak": false,
                  "optional": false,
                  "loc": {
                    "name": "a"
                  },
                  "request": "/Users/huruji/Documents/webpac-plugin-test/a.css",
                  "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.css"
                },
                "_chunks": null
              },
              {
                "module": "[Circular ~.1.entryModule]",
                "dependency": "[Circular ~.1.entryModule.dependencies.8]",
                "_chunks": null
              }
            ],
            "_chunks": {},
            "id": "./a.css",
            "index": 4,
            "index2": 4,
            "depth": 0,
            "issuer": null,
            "prefetched": false,
            "built": true,
            "used": null,
            "usedExports": null,
            "optimizationBailout": [],
            "useSourceMap": false,
            "_source": {
              "_value": "// extracted by mini-css-extract-plugin",
              "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/a.css"
            },
            "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js!/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js!/Users/huruji/Documents/webpac-plugin-test/a.css",
            "userRequest": "/Users/huruji/Documents/webpac-plugin-test/a.css",
            "rawRequest": "/Users/huruji/Documents/webpac-plugin-test/a.css",
            "binary": false,
            "parser": {
              "_pluginCompat": {
                "_args": [
                  "options"
                ],
                "taps": [
                  {
                    "type": "sync",
                    "name": "Parser"
                  },
                  {
                    "type": "sync",
                    "name": "Tapable camelCase",
                    "stage": 100
                  },
                  {
                    "type": "sync",
                    "name": "Tapable this.hooks",
                    "stage": 200
                  }
                ],
                "interceptors": []
              },
              "hooks": {
                "evaluateTypeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluate": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateDefinedIdentifier": {
                  "_map": {},
                  "_interceptors": []
                },
                "evaluateCallExpressionMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "statement": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [],
                  "interceptors": [],
                  "_x": []
                },
                "statementIf": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "label": {
                  "_map": {},
                  "_interceptors": []
                },
                "import": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "importSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "exportName",
                    "identifierName"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "export": {
                  "_args": [
                    "statement"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportImport": {
                  "_args": [
                    "statement",
                    "source"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportDeclaration": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportExpression": {
                  "_args": [
                    "statement",
                    "declaration"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null
                  ]
                },
                "exportSpecifier": {
                  "_args": [
                    "statement",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "exportImportSpecifier": {
                  "_args": [
                    "statement",
                    "source",
                    "identifierName",
                    "exportName",
                    "index"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyExportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "varDeclaration": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationLet": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationConst": {
                  "_map": {},
                  "_interceptors": []
                },
                "varDeclarationVar": {
                  "_map": {},
                  "_interceptors": []
                },
                "canRename": {
                  "_map": {},
                  "_interceptors": []
                },
                "rename": {
                  "_map": {},
                  "_interceptors": []
                },
                "assigned": {
                  "_map": {},
                  "_interceptors": []
                },
                "assign": {
                  "_map": {},
                  "_interceptors": []
                },
                "typeof": {
                  "_map": {},
                  "_interceptors": []
                },
                "importCall": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ImportParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "call": {
                  "_map": {},
                  "_interceptors": []
                },
                "callAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "new": {
                  "_map": {},
                  "_interceptors": []
                },
                "expression": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionAnyMember": {
                  "_map": {},
                  "_interceptors": []
                },
                "expressionConditionalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "expressionLogicalOperator": {
                  "_args": [
                    "expression"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "ConstPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "program": {
                  "_args": [
                    "ast",
                    "comments"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyDetectionParserPlugin"
                    },
                    {
                      "type": "sync",
                      "name": "UseStrictPlugin"
                    }
                  ],
                  "interceptors": [],
                  "_x": [
                    null,
                    null
                  ]
                },
                "hotAcceptCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                },
                "hotAcceptWithoutCallback": {
                  "_args": [
                    "expression",
                    "requests"
                  ],
                  "taps": [
                    {
                      "type": "sync",
                      "name": "HarmonyImportDependencyParserPlugin"
                    }
                  ],
                  "interceptors": []
                }
              },
              "options": {},
              "sourceType": "auto"
            },
            "generator": {},
            "resource": "/Users/huruji/Documents/webpac-plugin-test/a.css",
            "loaders": [
              {
                "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/mini-css-extract-plugin/dist/loader.js"
              },
              {
                "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/css-loader/dist/cjs.js"
              }
            ],
            "error": null,
            "_buildHash": "5a855d6f954c109e28c85c504bd0c1d3",
            "buildTimestamp": 1550127873318,
            "_cachedSources": {},
            "lineToLine": false,
            "_lastSuccessfulBuildMeta": {
              "providedExports": true
            },
            "_ast": null
          },
          "weak": false,
          "optional": false,
          "loc": {
            "start": {
              "line": 4,
              "column": 0
            },
            "end": {
              "line": 4,
              "column": 17
            }
          },
          "request": "./a.css",
          "userRequest": "./a.css",
          "originModule": "[Circular ~.1.entryModule]",
          "sourceOrder": 3,
          "parserScope": {
            "importVarMap": {}
          }
        }
      ],
      "blocks": [],
      "variables": [],
      "type": "javascript/auto",
      "context": "/Users/huruji/Documents/webpac-plugin-test",
      "debugId": 1004,
      "hash": "3e3ed907ea63c1b8ec000db711efd148",
      "renderedHash": "3e3ed907ea63c1b8ec00",
      "resolveOptions": {},
      "factoryMeta": {},
      "warnings": [],
      "errors": [],
      "buildMeta": {
        "exportsType": "namespace",
        "providedExports": []
      },
      "buildInfo": {
        "cacheable": true,
        "fileDependencies": {},
        "contextDependencies": {},
        "strict": true,
        "exportsArgument": "__webpack_exports__",
        "temporaryProvidedExports": false
      },
      "reasons": [
        {
          "module": null,
          "dependency": {
            "module": "[Circular ~.1.entryModule]",
            "weak": false,
            "optional": false,
            "loc": {
              "name": "index"
            },
            "request": "/Users/huruji/Documents/webpac-plugin-test/index.js",
            "userRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js"
          },
          "_chunks": null
        }
      ],
      "_chunks": {
        "_lastActiveSortFn": null
      },
      "id": "./index.js",
      "index": 0,
      "index2": 5,
      "depth": 0,
      "issuer": null,
      "prefetched": false,
      "built": true,
      "used": null,
      "usedExports": null,
      "optimizationBailout": [],
      "useSourceMap": false,
      "_source": {
        "_value": "import a from './a';\nconsole.log(a);\nimport './main.css';\nimport './a.css';",
        "_name": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/index.js"
      },
      "request": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js!/Users/huruji/Documents/webpac-plugin-test/index.js",
      "userRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js",
      "rawRequest": "/Users/huruji/Documents/webpac-plugin-test/index.js",
      "binary": false,
      "parser": {
        "_pluginCompat": {
          "_args": [
            "options"
          ],
          "taps": [
            {
              "type": "sync",
              "name": "Parser"
            },
            {
              "type": "sync",
              "name": "Tapable camelCase",
              "stage": 100
            },
            {
              "type": "sync",
              "name": "Tapable this.hooks",
              "stage": 200
            }
          ],
          "interceptors": []
        },
        "hooks": {
          "evaluateTypeof": {
            "_map": {},
            "_interceptors": []
          },
          "evaluate": {
            "_map": {},
            "_interceptors": []
          },
          "evaluateIdentifier": {
            "_map": {},
            "_interceptors": []
          },
          "evaluateDefinedIdentifier": {
            "_map": {},
            "_interceptors": []
          },
          "evaluateCallExpressionMember": {
            "_map": {},
            "_interceptors": []
          },
          "statement": {
            "_args": [
              "statement"
            ],
            "taps": [],
            "interceptors": [],
            "_x": []
          },
          "statementIf": {
            "_args": [
              "statement"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "ConstPlugin"
              }
            ],
            "interceptors": []
          },
          "label": {
            "_map": {},
            "_interceptors": []
          },
          "import": {
            "_args": [
              "statement",
              "source"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyImportDependencyParserPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null
            ]
          },
          "importSpecifier": {
            "_args": [
              "statement",
              "source",
              "exportName",
              "identifierName"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyImportDependencyParserPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null
            ]
          },
          "export": {
            "_args": [
              "statement"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null
            ]
          },
          "exportImport": {
            "_args": [
              "statement",
              "source"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "exportDeclaration": {
            "_args": [
              "statement",
              "declaration"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "exportExpression": {
            "_args": [
              "statement",
              "declaration"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null
            ]
          },
          "exportSpecifier": {
            "_args": [
              "statement",
              "identifierName",
              "exportName",
              "index"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "exportImportSpecifier": {
            "_args": [
              "statement",
              "source",
              "identifierName",
              "exportName",
              "index"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyExportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "varDeclaration": {
            "_map": {},
            "_interceptors": []
          },
          "varDeclarationLet": {
            "_map": {},
            "_interceptors": []
          },
          "varDeclarationConst": {
            "_map": {},
            "_interceptors": []
          },
          "varDeclarationVar": {
            "_map": {},
            "_interceptors": []
          },
          "canRename": {
            "_map": {},
            "_interceptors": []
          },
          "rename": {
            "_map": {},
            "_interceptors": []
          },
          "assigned": {
            "_map": {},
            "_interceptors": []
          },
          "assign": {
            "_map": {},
            "_interceptors": []
          },
          "typeof": {
            "_map": {},
            "_interceptors": []
          },
          "importCall": {
            "_args": [
              "expression"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "ImportParserPlugin"
              }
            ],
            "interceptors": []
          },
          "call": {
            "_map": {},
            "_interceptors": []
          },
          "callAnyMember": {
            "_map": {},
            "_interceptors": []
          },
          "new": {
            "_map": {},
            "_interceptors": []
          },
          "expression": {
            "_map": {},
            "_interceptors": []
          },
          "expressionAnyMember": {
            "_map": {},
            "_interceptors": []
          },
          "expressionConditionalOperator": {
            "_args": [
              "expression"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "ConstPlugin"
              }
            ],
            "interceptors": []
          },
          "expressionLogicalOperator": {
            "_args": [
              "expression"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "ConstPlugin"
              }
            ],
            "interceptors": []
          },
          "program": {
            "_args": [
              "ast",
              "comments"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyDetectionParserPlugin"
              },
              {
                "type": "sync",
                "name": "UseStrictPlugin"
              }
            ],
            "interceptors": [],
            "_x": [
              null,
              null
            ]
          },
          "hotAcceptCallback": {
            "_args": [
              "expression",
              "requests"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyImportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          },
          "hotAcceptWithoutCallback": {
            "_args": [
              "expression",
              "requests"
            ],
            "taps": [
              {
                "type": "sync",
                "name": "HarmonyImportDependencyParserPlugin"
              }
            ],
            "interceptors": []
          }
        },
        "options": {},
        "sourceType": "auto"
      },
      "generator": {},
      "resource": "/Users/huruji/Documents/webpac-plugin-test/index.js",
      "loaders": [
        {
          "loader": "/Users/huruji/Documents/webpac-plugin-test/node_modules/babel-loader/lib/index.js"
        }
      ],
      "error": null,
      "_buildHash": "d1beb4573e61d4768d808e9b8460f47c",
      "buildTimestamp": 1550127874127,
      "_cachedSources": {},
      "lineToLine": false,
      "_lastSuccessfulBuildMeta": {
        "exportsType": "namespace",
        "providedExports": []
      },
      "_ast": null
    },
    "_modules": {
      "_cache": {}
    },
    "_groups": {
      "_lastActiveSortFn": null
    },
    "files": [
      "index.css",
      "index.5c50884f7299ede45e0f.js"
    ],
    "rendered": true,
    "hash": "f5481eb1afed794b176d13608fe4bb0e",
    "contentHash": {
      "css/mini-extract": "449934d87925dc54b299",
      "javascript": "322bcaec3cd5eeaeddae"
    },
    "renderedHash": "f5481eb1afed794b176d",
    "extraAsync": false
  }
]

7000+ 行数确实让人有点望而却步,不过整理一下,可以发现这个数组包含两个 chunk,显然这是符合我们预期的

将其中一个 chunk 的拆解来看,大概是一个含有 id 、 entryModule、files、各种哈希的一个对象,其中 files 可以理解为输出的这个 chunk 会输出的文件数组。

得益于 webpack 的开源以及合理的命名,我们可以在 webpack 的仓库中找到关于 chunk 的源码,https://github.com/webpack/webpack/blob/master/lib/Chunk.js

很容易发现 chunk 其实是一个 class 对象

通过 Object.getOwnProppertyNames 方法可以获取 class 的属性,如下:

compilation.chunks.forEach((chunk) => {
    fs.writeFileSync('chunk-methods.json', stringify(Object.getOwnPropertyNames(chunk.__proto__), null, 2), {
       flag: 'w+'
   })
})

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 动手实现一个AMD模块加载器(三)

    在上一篇文章中,我们的AMD模块加载器基本已经能够使用了,但是还不够,因为我们没有允许匿名模块,以及没有依赖等情况。实际上在amd的规范中规定的就是define...

    用户1515472
  • 动手实现一个AMD模块加载器(二)

    在上一篇文章中,我们已经基本完成了模块加载器的基本功能,接下来来完成一下路径解析的问题。

    用户1515472
  • Webpack 的 stats 、Compilation、compiler 对象里都有啥

    最近想要了解一下 webpack 的 plugin 怎么写,于是各种文章就会告诉你想要写一个 plugin 那么你首先需要了解一下 Compilation、co...

    用户1515472
  • 通知 - NSNotificationCenter

    1、每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信;

    tandaxia
  • python基本数据类型的介绍

    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

    用户2398817
  • dotnet检测类型是否为泛型

    private static string GetTableName(Type type) { //检测类型是否为泛型...

    hbbliyong
  • 原 数据字典+匿名委托模拟switch/c

    魂祭心
  • 【LeetCode06】反转字符串中的单词

    漫威宇宙最有钱的英雄,瓦坎达的国王。黑豹非洲国家瓦坎达守护者,每代瓦坎达守护者都是王室成员。特查拉是目前的守护者,也是复仇者联盟成员之一黑豹,有超乎凡人的速度、...

    Sam Gor
  • Struts2 Action

      具体Action的实现可以是一个普通的java类,里面有public String execute方法即可

    Hongten
  • map 学习(下)——C++ 中的 hash_map, unordered_map

    map 学习(下)——C++ 中的 hash_map, unordered_map 接上篇《map 学习(一)——C++中 map 的使用》。 一、hash_m...

    剑影啸清寒

扫码关注云+社区

领取腾讯云代金券