如何用Webpack解析路径?

时间:2017-02-10 16:29:57

标签: javascript reactjs webpack require

我正在使用Webpack和 sass-loader css-loader &amp ;;处理ReactJs项目。 URL装载机

我希望不解析字体 - 路径路径并确保它在SASS文件中的设置方式。

问题:

如果我调用绝对路径(即:http://fonts.com/my-font.eot/path/to/my-font.eot),则路径无法解析。

但是,如果我使用相对路径(即:my-font.eotpath/to/my-font.eot), url-loader 会尝试解析路径。

在我的情况下,我需要使用相对路径(即使它产生404错误)。

我尝试了什么:

我尝试排除 url-loader 中的所有字体扩展名,但Webpack不知道该怎么处理这种类型的文件,即使该文件可能不存在

这是我得到的错误:

  

模块解析失败:C:.... \ fonts \ my-font.eot意外字符'   ' (1:1)您可能需要一个合适的加载器来处理这种文件类型。



我还试图禁用" url" css-loader的选项,但绝对没有任何反应。我想很有可能我没有正确添加选项:

{
    test: /\.scss$/,
    loaders: ["style-loader", "css-loader", "sass-loader"],
    options: { url: false }
},



这是我目前的代码:

module: {
    loaders: [
      {
        exclude: [
          /\.html$/,
          /\.(js|jsx)$/,
          /\.css$/,
          /\.scss$/,
          /\.json$/,
          /\.svg$/
        ],
        loader: 'url',
        query: {
          limit: 10000,
          name: 'path/dist/[name].[hash:8].[ext]'
        }
      },
      {
        test: /\.scss$/,
        loaders: ["style-loader", "css-loader", "sass-loader"]
      },
      ...
    ]
  },
  ...
}

2 个答案:

答案 0 :(得分:0)

我找到了解决方案。我没有正确添加 css-loader 选项。

因为我没有找到使用数组语法直接添加选项的方法,所以我不得不切换到字符串语法。


此代码不起作用:

{
    test: /\.scss$/,
    loaders: ["style-loader", "css-loader", "sass-loader"],
    options: { url: false }
},


此代码有效:

{
    test: /\.scss$/,
    loader: 'style!css?url=false!sass'
}

答案 1 :(得分:0)

这个问题可能有点老了,但是我仍然想纠正答案。

当您要使用数组语法时,基本上可以为每个加载程序定义所有选项。为此,您必须在数组中的加载器中使用一个对象。所以代替

{
    test: /\.scss$/,
    loaders: ["style-loader", "css-loader", "sass-loader"],
    options: { url: false }
},

你必须写

{
    test: /\.scss$/,
    loaders: [
         "style-loader", 
         {
            loader:'css-loader',
            options: {
                 url: false
            }
         },
         "sass-loader"],

},