我在一个旧项目上使用以下设置:
webpack@3.0.0
extract-text-webpack-plugin@2.1.2
我现在正在尝试一个新项目,所以已经升级到:
webpack@3.8.1
extract-text-webpack-plugin@3.0.1.
Webpack配置完全相同,但现在我遇到了错误。
我使用的是node波旁威士忌,我想让它在我的所有条目中都可用,而不是每次都导入它。
我有一个SCSS文件:stylesheets/tools/mixins/bourbon.css,它(应该)只是导入波旁威士忌:@import 'bourbon';
然后,我将使用sass资源加载器使其(以及其他一些混合插件)可用于所有模块(请参阅下面的配置)。
webpack配置:
{
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:
节点波旁威士忌的includePath似乎被忽略了?
更新:
我现在已经设法通过直接引用波旁威士忌来解决问题:@import '~bourbon/app/assets/stylesheets/_bourbon';
虽然不理想,但它确实起到了作用。
有趣的是,当我在一个没有在sass资源加载器中声明的文件中包含波旁@import 'bourbon';
时,它就起作用了。也许ExtractTextPlugin没有将includePath从sass加载程序传递到sass资源加载程序中引用的模块。
我不是肯定的,但我认为includepaths
必须是一个数组,即使只有一个条目。
此外,bourbon
和bourbon-neat
是官方页码,所以你可能会更好地使用它们,而不是node-bourbon
。
编辑以澄清:
您需要输入以下选项→
options: {
sourceMap: true,
includePaths: [require('bourbon').includePaths]
}