V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BreadKiller
V2EX  ›  Vue.js

请教一个静态资源处理的问题

  •  
  •   BreadKiller · 2020-08-05 17:07:22 +08:00 · 1709 次点击
    这是一个创建于 1560 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目中有个 config.xml 需要在打包后的根目录中,打包后的目录如下:

    • project

      • css

      • js

      • index.html

      • config.xml

    目前的做法是直接把 config.xml 放在 public 的文件夹中以静态资源打包。

    在项目中和这个 config.xml 都有需要用到项目的版本号,我直接在 js 里读取 package.json 的 version,但是在静态资源的这个 config.xml 没办法读取 package.json 的信息。

    所以有没有什么办法可以让这个 config.xml 也能读取到一个全局的 version,这样就不需要每次修改版本号都要修改两个文件了。

    项目是用脚手架 vuecli 生成的

    第 1 条附言  ·  2020-08-05 21:20:05 +08:00

    已解决,解决方法:

    首先把config.xml中的version修改为占位符 {version}

    然后在vue.config.js里添加

    const version = require("./package.json").version;
    module.exports = {
      chainWebpack: (config) => {
        config.plugin("copy").tap((options) => {
          options[0][0].transform = function(content, path) {
            if (/config.xml/.test(path)) {
              content = Buffer.from(content.toString().replace("{version}", version));
            }
            return content;
          };
          return options;
        });
      }
    }
    

    再次感谢回复。

    4 条回复    2020-08-05 19:54:52 +08:00
    yhxx
        1
    yhxx  
       2020-08-05 17:28:18 +08:00
    打包的时候搞个 webpack 插件把 version 直接写进这个 xml 文件里?
    zzk1989
        2
    zzk1989  
       2020-08-05 17:55:02 +08:00
    楼上已经告诉你了,还有一种方案
    1. vue-cli 有 hooks done ,在里面 configureWebpack 里面注册一个插件在打包完成后用 fs 写文件
    2. npm 脚本也有 post 钩子,新建一个 scripts 在单独的 js 中也能处理 比如"postbuild"
    liberty1900
        3
    liberty1900  
       2020-08-05 19:46:15 +08:00
    config.xml 放上占位符, build script 里面写 linux 命令 (grep + sed 应该就行), 每次 build 自动从 package.json 读取 version 替换 config.xml 里的占位符
    BreadKiller
        4
    BreadKiller  
    OP
       2020-08-05 19:54:52 +08:00
    @liberty1900 @zzk1989 @yhxx 感谢回复!我看看哪种方便一点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1024 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:20 · PVG 04:20 · LAX 12:20 · JFK 15:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.