我有这个设置在一个较旧的项目上工作,使用:
webpack@3.0.0
extract-text-webpack-plugin@2.1.2
我现在正在尝试一个新项目,因此已升级到:
webpack@3.8.1
extract-text-webpack-plugin@3.0.1.
Webpack 配置完全相同,但现在我遇到了错误。
我正在使用 node-bourbon,我想让它在我的所有条目中都可用,而不必每次都导入它。
我有一个 SCSS 文件:stylesheets/tools/mixins/bourbon.scss (应该)简单地导入波旁威士忌:
@import 'bourbon';
然后我使用 sass-resources-loader 使其(以及其他一些 mixins)在所有模块中都可用(参见下面的配置)。
网络包配置:
{
test: /\.scss$/,
use: ExtractTextPlugin.extract({
use: [
...
{
loader: "sass-loader",
options: {
sourceMap: true,
includePaths: require('bourbon').includePaths
}
},
{
loader: 'sass-resources-loader',
options: {
resources: [
'./frontend/stylesheets/settings/*.scss',
'./frontend/stylesheets/tools/**/*.scss'
]
},
},
]
})
},
但是 SCSS 文件中的 import 语句没有解析为 node_modules,它试图引用自己,所以我得到这个错误:
Module build failed:
@import 'bourbon';
^
An @import loop has been found:
似乎 node-bourbon 的 includePaths 被忽略了?
更新:
我现在通过直接引用波旁威士忌设法解决了这个问题:
@import '~bourbon/app/assets/stylesheets/_bourbon';
不理想,但它可以完成工作。
有趣的是,当我@import 'bourbon';
在 sass-resources-loader 中未声明的文件中包含波旁威士忌时,它可以工作。也许 ExtractTextPlugin 不会将 sass-loader 中的 includePaths 传递给 sass-resource-loader 中引用的模块。