什么能解决.扩展在Webpack中所做的



这是关于resolve.extensions的官方文档

resolve.extensions

用于解析模块的扩展数组。例如,为了发现CoffeeScript文件,你的数组应该包含字符串".coffee"。

默认值:["、".webpack.js"、".web.js"、" . js "]

重要:设置此选项将覆盖默认值,这意味着webpack将不再尝试使用默认扩展名解析模块。如果你想让扩展名需要的模块(例如require('./somefile.ext'))被正确解析,你必须在数组中包含一个空字符串。类似地,如果你想要那些没有扩展名的模块(例如require('underscore'))被解析为带有".js"扩展名的文件,你必须在你的数组中包含".js"。

我完全被这个搞糊涂了。

"如果你想让扩展名需要的模块(例如require('./somefile.ext'))被正确解析,你必须在数组中包含一个空字符串。"

为什么?

"同样地,如果你想要那些没有扩展名的模块(例如require('underscore'))被解析为扩展名为".js"的文件,你必须在你的数组中包含".js"。"

为什么?如果我在数组中包含".js"one_answers".css"呢?

我不清楚resolve.extension的行为。请举例说明。

Webpack使用resolve.extensions生成到模块的所有可能路径,例如

function getPaths(module) {
    return ['', '.js', '.css'].map(ext => module + ext);
}
getPaths('./somefile'); // ['./somefile', './somefile.js', './somefile.css']
getPaths('./somefile.js'); // ['./somefile.js', './somefile.js.js', './somefile.js.css']

Webpack将继续查找这些路径,直到找到一个文件。

最新更新