zoukankan      html  css  js  c++  java
  • vue2.x webpack打包资源路径问题

    引言:

    vue在dev环境下能正常运行,但build后就出现了图片等资源加载不出来的情况。最近爱上了连体字体(ligature feature),就是输入<=自动可以连体为≤的等宽控制台字体。有JetBrain Mono、Fira Code、Cascadia Code(Windows Terminal的默认字体),扯远了。我想通过css的方式让网页加载这种字体,但是遇到了困难,以下是解决方法。

    一、环境:

    vue-cli 2.x, webpack模板

    二、目录结构:


    说明: 相对路径中含有assets关键字的资源会被webpack打包, 而static文件夹下的资源都不会被打包
    用相对引用方式引用assets文件夹下的资源, 用绝对引用方式引用static文件夹下的资源。
    assets下的资源会被webpack打包,会在资源名上加上一串字符,如JetBrainsMono-Regular-9a5b27d.woff

    三、关键配置文件:

    1. config/index.js:

    build: {
        env: require("./prod.env.js"),
        index: path.resolve(__dirname, "../dist/index.html"),
        assetsRoot: path.resolve(__dirname, "../dist/"),
        assetsSubDirectory: "static",
        assetsPublicPath: "./",
        productionSourceMap: true,
        devtool: "#source-map",
        productionGzip: false,
        productionGzipExtensions: ["js", "css"],
        bundleAnalyzerReport: process.env.npm_config_report
    }
    

    2. build/utils.js:

    if (options.extract) {
          return ExtractTextPlugin.extract({
            use: loaders,
            fallback: 'vue-style-loader',
            publicPath: "../../"
          })
        } else {
          return ['vue-style-loader'].concat(loaders)
    }
    

    四、使用:

    1. App.vue的css里面引用字体文件:

    @font-face {     
      font-family: "JetBrains Mono"; 
        src: url("./assets/fonts/JetBrainsMono-Regular.woff"); 
    }
    

    2. 标签src引用图片:

    <img src="../assets/img/snower.png" />
    

    五、小结:

    assets里面的资源一定要相对引用, /assets/... 绝对引用方式会产生路径问题

  • 相关阅读:
    区域赛系列一多边形划分(卡特兰数)
    Going Home(最大匹配km算法)
    奔小康赚大钱(km)
    Air Raid(最小路径覆盖)
    Save Princess(丑数)
    Asteroids(最小点覆盖)
    Windows命令行命令总结
    SPI协议详解
    Python实现串口通信(pyserial)
    python中进制转换
  • 原文地址:https://www.cnblogs.com/xfk1999/p/vue-build-resource-path-problem.html
Copyright © 2011-2022 走看看