首页 > 解决方案 > 如何从 javascript 中读取 mix-manifest.json

问题描述

我使用 laravel-mix 缓存了我的图像。对于刀片中的图像,它可以工作。但是我不知道如何从 javascript 访问该版本化路径。

是否可以mix-manifest.json从已编译的 javascript 中读取?这样我就可以创建一个 mixin 并获取版本化路径

例如,在我的 mix-manifest.json 我有

"/images/hello.svg": "/images/hello.svg?id=0360de485c68385550da",

我想如果我可以mix-manifest.json从我编译的 javascript 中读取,我可以创建一个辅助方法,比如

export default {
  methods: {
     mixPath(path) {
        let manifestObj = // read mix-manifest.json
        return manifestObj[path];
     }
  }
}

标签: javascriptlaravellaravel-mix

解决方案


我可以访问 mix-manifest.json

const vm = this;

if (!Vue.prototype.BROWSER_BUILD) {
     let path = require("path");
     this.manifestPaths = JSON.parse(require('fs').readFileSync(path.resolve('./mix-manifest.json'), 'utf8'));
} else {
     axios.get('/mix-manifest.json').then(json => {
        vm.manifestPaths = json.data
     })
}

和方法:

methods: {
    mix(path) {
        if (typeof this.manifestPaths[path] == 'undefined') {
            return this.manifestPaths[path];
        }

        return path;
    }
}

如果您知道更好的方法,我很高兴知道:)


推荐阅读