在这种情况下,我已经按照以下方式创建了一个Webpack配置(即使这可能是个坏主意):
module.exports = {
//...
resolve: {
alias: {
something/aliased: path.resolve(__dirname, 'src/something/'),
something/aliased/more/specifically: path.resolve(__dirname, 'src/more_specific/')
}
}
};
我将此配置与sass-loader
一起使用,出错的代码如下:
@import "~something/aliased/more/specifically/foo/bar";
构建时,出现以下错误:
ERROR in ./~/css-loader?{}!./~/sass-loader?{}!./some/component/with/sass/imports.scss
Module build failed:
@import "~something/aliased/more/specifically/foo/bar";
^
File to import not found or unreadable: ~something/aliased/more/specifically/foo/bar
Parent style sheet: stdin
似乎webpack总是选择使用something/aliased
条目,而不选择something/aliased/more/specifically
条目-无论它们的顺序如何。
我非常确定此错误是由于/src/more_specific/foo/bar
存在,而src/something/.../foo/bar
不存在引起的;删除webpack配置中的something/aliased
条目会使这些错误消失,但是(显然)它没有执行我想要的别名。
Webpack如何处理像这样的重叠resolves.alias
条目?有什么方法可以控制它选择使用哪个别名?