Webpack 3,Extract Text插件不解析sass-loader includePaths

时间:2017-10-19 11:42:58

标签: webpack bourbon sass-loader extracttextwebpackplugin

我使用以下方法处理旧项目:

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中引用的模块。

1 个答案:

答案 0 :(得分:1)

我不是肯定的,但我相信includepaths必须是一个数组,即使只有一个条目。

此外,bourbonbourbon-neat也是官方版块,因此您可以更好地运气,而不是node-bourbon

编辑以澄清:

您需要为选项→

输入以下内容
            options: {
              sourceMap: true,
              includePaths: [require('bourbon').includePaths]
            }