我使用以下方法处理旧项目:
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在所有模块中提供(以及其他一些mixin)(参见下面的配置)。
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:
似乎忽略了node-bourbon的includePaths?
更新:
我已经设法通过直接引用波旁语来解决:
@import '~bourbon/app/assets/stylesheets/_bourbon';
不理想,但是它可以胜任。
有趣的是,当我将bourbon @import 'bourbon';
包含在未在sass-resources-loader中声明的文件中时,它可以工作。也许ExtractTextPlugin不会将sass-loader中的includePaths传递给sass-resource-loader中引用的模块。
答案 0 :(得分:1)
我不是肯定的,但我相信includepaths
必须是一个数组,即使只有一个条目。
此外,bourbon
和bourbon-neat
也是官方版块,因此您可以更好地运气,而不是node-bourbon
。
编辑以澄清:
您需要为选项→
输入以下内容 options: {
sourceMap: true,
includePaths: [require('bourbon').includePaths]
}