1

我有这个设置在一个较旧的项目上工作,使用:

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

4

1 回答 1

1

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

并且是官方的包装,所以你可能会有更好的运气,而bourbon不是。bourbon-neatnode-bourbon

编辑以澄清:

您需要为选项输入以下内容 →

            options: {
              sourceMap: true,
              includePaths: [require('bourbon').includePaths]
            }
于 2017-10-19T15:35:28.057 回答