【问题标题】:Webpack not loading images from CSS background-image propertyWebpack 不从 CSS background-image 属性加载图像
【发布时间】:2016-02-26 20:33:21
【问题描述】:

我不知道该怎么做...我正在使用带有 CSS、样式、sass 和 stylus 加载器的 Webpack。这是我的 webpack 配置...当我使用类似以下内容时,图像不会显示:

body
    background-image: url('bg.jpg')

如果我在 HTML 中包含带有<img> 标签的图像,它们可以正常工作...

我的 webpack 配置:

var path = require('path')

module.exports = {
  entry: {
    app: './src/main.js'
  },
  output: {
    path: path.resolve(__dirname, '../dist/static'),
    publicPath: '/static/',
    filename: '[name].js'
  },
  resolve: {
    extensions: ['', '.js', '.vue'],
    alias: {
      'src': path.resolve(__dirname, '../src')
    }
  },
  resolveLoader: {
    root: path.join(__dirname, 'node_modules')
  },
  module: {
    preLoaders: [
      {
        test: /\.vue$/,
        loader: 'eslint',
        exclude: /node_modules/
      },
      {
        test: /\.js$/,
        loader: 'eslint',
        exclude: /node_modules/
      }
    ],
    loaders: [
      {
        test: /\.vue$/,
        loader: 'vue'
      },
      {
        test: /\.js$/,
        loader: 'babel',
        exclude: /node_modules/
      },
      {
        test: /\.json$/,
        loader: 'json'
      },
      {
        test: /\.scss$/,
        loaders: ['style', 'css?sourceMap', 'sass?sourceMap']
      },
      {
        test: /\.woff/,
        loader: 'url?prefix=font/&limit=10000&mimetype=application/font-woff'
      }, {
        test: /\.ttf/,
        loader: 'file?prefix=font/'
      },
      {
        test: /\.eot/,
        loader: 'file?prefix=font/'
      },
      {
        test: /\.svg/,
        loader: 'file?prefix=font/'
      },
      {
        test: /\.(jpe?g|png|gif|svg)$/i,
        loaders: [
          'url?limit=10000&name=[name].[ext]?[hash:7]',
          'image-webpack?{progressive:true, optimizationLevel: 7, interlaced: false, pngquant:{quality: "65-90", speed: 4}}'
        ]
      }
    ]
  },
  eslint: {
    formatter: require('eslint-friendly-formatter')
  },
  vue: {
    loaders: {
      sass: 'style!css!sass?indentedSyntax'
    }
  }
}

【问题讨论】:

  • 我会尝试使用 url(require('myimage.png')) ,但我不确定它是否有效。

标签: webpack vue.js


【解决方案1】:

您需要 prepend the image url~。这告诉 Sass 加载器使用 webpack 的 require 分辨率来解析文件路径;默认情况下,它将像普通的 Sass 图像 url() 一样被解析。所以应该是background-image: url('~bg.jpg')——然后确保 webpack 知道(通过你的配置)如何找到 bg.jpg 所在的目录。

【讨论】:

  • Awoseme,这是我正在寻找的最佳答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 2019-04-30
  • 2012-03-07
  • 1970-01-01
  • 2021-08-15
  • 2021-03-06
相关资源
最近更新 更多