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
Webpack 从您的入口文件开始跟踪依赖关系。当它向外更深入地追踪到你的依赖树时,如果 webpack 遇到动态需求,它会自动创建一个叫做上下文的东西:
基本上,假设您使用路径,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
相当简单的配置:
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
Webpack 从您的入口文件开始跟踪依赖关系。当它向外更深入地追踪到你的依赖树时,如果 webpack 遇到动态需求,它会自动创建一个叫做上下文的东西:
基本上,假设您使用路径,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