以下是关于resolve.extensions的official document
resolve.extensions
应该用于解析模块的扩展数组。例如,为了发现CoffeeScript文件,您的数组应包含字符串“.coffee”。
默认值:[“”,“。webpack.js”,“。web.js”,“。js”]
重要提示:设置此选项将覆盖默认值,这意味着webpack将不再尝试使用默认扩展名解析模块。如果您希望正确解析其扩展所需的模块(例如require('./ somefile.ext')),则必须在数组中包含空字符串。同样,如果您希望将没有扩展名所需的模块(例如require('下划线'))解析为扩展名为“.js”的文件,则必须在数组中包含“.js”。
我对此完全感到困惑。
“如果您希望正确解析其扩展所需的模块(例如require('./ somefile.ext')),则必须在数组中包含空字符串。”
为什么?
“同样,如果您希望将没有扩展名所需的模块(例如require('下划线'))解析为扩展名为”.js“的文件,则必须在数组中包含”.js“。” p>
为什么呢?如果我在数组中包含“.js”和“.css”,该怎么办?
我不清楚resolve.extension的行为。请举例说明。
答案 0 :(得分:8)
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将继续查找每个路径,直到找到文件为止。