webpack 捆绑的比它应该的多得多

webpack bunding a lot more than it should

相当简单的配置:

module.exports = {
    entry: './index',
    resolve: {
      alias: aliases,
      extensions: ['', '.js']
    },

    output: {
      path: __dirname,
      filename: 'output.js'
    }
};

运行 webpack 错误并尝试要求我未使用的图像和其他文件或 "requiring" 任何地方。

当我运行 webpack --profile --json看dep tree的时候,我发现一些奇怪的表达方式

 37           "id": 62,
 36           "identifier": "/Users/pyramation/web/assets/js/libs/jsfileImNotRequiring.js",
 35           "name": "./assets/js/libs/jsfileImNotRequiring.js",
 34           "index": 62,
 33           "index2": 53,
 32           "size": 11225,
 31           "cacheable": true,
 30           "built": true,
 29           "optional": true,
 28           "prefetched": false,
 27           "chunks": [
 26             0
 25           ],
 24           "assets": [],
 23           "issuer": "/Users/pyramation/web/assets/js/libs /^\.\/.*$/",
 22           "profile": {
 21             "factory": 22,
 20             "building": 69
 19           },
 18           "failed": false,
 17           "errors": 0,
 16           "warnings": 0,
 15           "reasons": [
 14             {
 13               "moduleId": 61,                                             
 12               "moduleIdentifier": "/Users/pyramation/web/assets/js/libs /^\.\/.*$/",
 11               "module": "./assets/js/libs ^\.\/.*$",
 10               "moduleName": "./assets/js/libs ^\.\/.*$",
  9               "type": "context element",
  8               "userRequest": "./jsfileImNotRequiring.js"
  7             },
  6             {                                                                                               5               "moduleId": 61,
  4               "moduleIdentifier": "/Users/pyramation/web/assets/js/libs /^\.\/.*$/",
  3               "module": "./assets/js/libs ^\.\/.*$",
  2               "moduleName": "./assets/js/libs ^\.\/.*$",
  1               "type": "context element",
  0               "userRequest": "./jsfileImNotRequiring"
  1             }
  2           ],

看起来有一个表达式 /^\.\/.*$/ 附加到 libs 文件夹,我没有明确地通配或类似的东西,所以不确定它来自哪里。

如能对此有所了解,我们将不胜感激。

提前致谢!

经过多次调试,pusher

https://github.com/DanielApt/webpack-pusher

Webpack 从您的入口文件开始跟踪依赖关系。当它向外更深入地追踪到你的依赖树时,如果 webpack 遇到动态需求,它会自动创建一个叫做上下文的东西:

http://webpack.github.io/docs/configuration.html#automatically-created-contexts-defaults-module-xxxcontextxxx

基本上,假设您使用路径,webpack 不知道您将动态需要哪些子目录文件,并创建一个上下文。上下文吸收了该子目录中的所有文件,因为它不知道您在 运行 时间实际需要哪些文件。

如果您知道您的动态需求无论如何都会解决,例如从别名,你可以用类似的东西关闭自动创建上下文:

module.exports = {
    entry: './index',
    resolve: {
      alias: aliases,
      extensions: ['', '.js']
    },
    module: {

        unknownContextRegExp: /$^/,
        unknownContextCritical: false,

        exprContextRegExp: /$^/,
        exprContextCritical: false
    },
    output: {
      path: __dirname,
      filename: 'output.js'
    }
};

可能有一种方法可以限制在自动上下文创建过程中吸收的子文件,但我不确定:http://webpack.github.io/docs/configuration.html#automatically-created-contexts-defaults-module-xxxcontextxxx