javascript - 如何绕过文件加载器?

标签 javascript reactjs svg webpack

在我的 webpack.config.js 我有这个:

module: {
    loaders: [
      {
        test: /\.css$/,
        include: APP_DIR,
        loader: 'style-loader!css-loader',
      },
      {
        test: /\.scss$/,
        include: APP_DIR,
        loaders: ['style-loader', 'css-loader', 'sass-loader'],
      },
      {
        test: /\.svg$/,
        loader: 'babel-loader!react-svg-loader',
      },
    ],
  },

我用它直接在组件中导入一些 svg 文件。

但是现在我只想通过 scss 显示驻留在我的 React App 文件夹中的 svg 文件。但是 babel-loader!react-svg-loader 阻止了它的发生。我正在通过 React 加载 scss。

这个:

background-image: url('../assets/icons/pattern/size_35.svg');

成为

background-image: url([object Object]);

我可以这样做,但感觉很老套:

background-image: url('[FULL_PATH_FROM_ROOT]/assets/icons/pattern/size_35.svg');

根据我的理解,对于这种情况,我不应该有任何文件加载器,但因为我已经有一个它阻止了它的工作。

不过,我确实想解析来自 React 应用程序的相对 URL。这样:

background-image: url('../assets/icons/pattern/size_35.svg');

变成这样

background-image: url('[FULL_PATH_FROM_ROOT]/assets/icons/pattern/size_35.svg');

在前端。

最佳答案

如果你只想绕过你的react-svg-loader一次,你可以编写内联加载器:

background-image: url('!!file-loader!../assets/icons/pattern/size_35.svg');

如果这很常见,您可以使用 resourceQuery对于您想作为文件处理的 svg:

{
  test: /\.svg$/,
  oneOf: [
    {
      resourceQuery: /file/, // size_35.svg?file
      use: 'file-loader'
    },
    {
      use: 'babel-loader!react-svg-loader'
    }
  ]
}

关于javascript - 如何绕过文件加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51173735/

相关文章:

javascript - 悬停仅在用户单击元素时起作用

javascript - 学习knockoutjs - 值不添加到数组

javascript - 使用 webpack 将 Assets 文件夹推送到公共(public)目录

javascript - Array.prototype.sort 方法更改数组值以及该数组的变量值

.htaccess - 如何通过 Apache2 发送压缩(放气)的 SVG?

xml - 如何在 SVG 文件中嵌入任意文本/数据?

javascript - css - 显示元素然后对其进行动画处理(由 jquery addClass 触发)

javascript - Rails json 返回带有 jbuilder html 标签

javascript - React - 如何通过将 State 作为 props 传递来根据另一个下拉列表中的选择来填充一个下拉列表

Javascript `Path2D` arc 未呈现