我通过Webpack推送一个相当大的应用程序,它从两个库文件夹中提取:thirdparty和node_modules。我已经为js文件设置了我的规则:
{
test: /\.js$/,
loader: 'babel-loader',
include: [
/src\/js\/client/
],
exclude: [
/node_modules/,
/thirdparty/
]
}
我希望webpack不会解析这两个目录下的任何文件夹,但是我的库会出现错误。例如:
WARNING in ./~/durandal/js/system.js
51:8-15 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
WARNING in ./~/durandal/js/system.js
52:8-15 Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
ERROR in ./~/durandal/js/system.js
Cannot statically analyse 'require(..., ...)' in line 278
@ ./src/js/client/lib/durandal/overrides/views.js 2:0-37
@ ./src/js/client/index.js
我是否误解了包含/排除的功能,或者这是Webpack的错误?
答案 0 :(得分:1)
规则不决定webpack正在解析哪些文件,而是仅应用于包含的文件并满足条件。即使你根本没有规则,webpack仍会解析相同的文件,因为你在某处导入它们。
您可以排除使用externals
选项捆绑的模块。这些外部因素必须以某种方式出现在运行时(例如,加载到<script>
标记中)。
如果您只是希望webpack不解析文件,但仍然包含它们,则可以配置module.noParse
。但正如文档所说,它们不应包含任何导入。