• 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/... 绝对引用方式会产生路径问题

  • 相关阅读:
    Python装饰器
    Python学习【第十二篇】模块(2)
    Python学习【第十一篇】模块(1)
    Python学习【第十篇】基础之杂货铺
    Python学习【第九篇】函数
    Python学习【第八篇】Set集合
    Python学习【第七篇】基本数据类型
    Python学习【第六篇】运算符
    Python学习【第五篇】循环语句
    Python学习【第四篇】用户输入及判断
  • 原文地址:https://www.cnblogs.com/xfk1999/p/vue-build-resource-path-problem.html
Copyright © 2020-2023  润新知