×

prod环境publicPath为相对路径时,css中引用的url路径错误

96
kamifun
2017.08.08 23:46* 字数 132

重现

// 使用脚手架生成项目
vue init webpack

更改config/index.js配置文件build.assetsPublicPath为'./'
在App.vue的<style>中加一个background: url('./asssets/images/xxx.png')之类相对路径引用的样式

此时进行打包命令

npm run build

你会发现提取出来的cssurl()中图片的路径是static/img/xxx.png 这样的,用浏览器打开index.html将会有xxxxxxx/static/css/static/img/xxx.png这个图片404的报错

解决方案

主要是需要单独为css 配置 publicPath,更改build/utils.js文件中 ExtractTextPlugin 插件的options配置:

    if (options.extract) {
      return ExtractTextPlugin.extract({
        use: loaders,
        publicPath: '../../',         // 注意配置这一部分,根据目录结构自由调整
        fallback: 'vue-style-loader'
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
vue
Web note ad 1