关于electron-vue里的app.asar


app.asar的位置

会在打包目录下生成一个叫win-unpacked的文件夹,其中在win-unpacked目录下有软件的exe执行文件和其他文件夹,其中有resources的文件夹。

app.asar的位置就在resources下面。

解压app.asar

解压app.asar需要asar工具,使用npm全局安装

npm install asar -g

resources文件下打开控制台,输入
extract可简写为e

asar extract app.asar ./app

解压后会发现,在目录下会生成一个app的目录文件夹,打开后会发现app.asar解压后是一堆打包了的js和css和一些静态资源文件。

_static和 _dirname

__dirname__static在dev环境中,代表以下路径:

dev produce
__dirname 指向main.js文件所在的目录 指向<app.asar>
__static 指向publish(静态资源目录) 指向<app.asar>

若要使用app.asar里的静态资源,可使用${__dirname}/静态资源写法。

background.js里使用静态资源配置,如下:

let url =
    process.env.NODE_ENV !== "production" ? "./public/versions.json" : `${__dirname}/versions.json`;

let readurl = fs.readFileSync(url, "utf8").toString();

注:要添加toString()后,再使用JSON.parse()把字符串转换为obj。本地运行,不需要toString(),但打包后不使用的话,就报错不是一个json格式,具体原因不太清楚。大概率是因为字符串里有换行符吧,反正本地可以,打包不行就很莫名其妙,不做细研究。

vue内使用静态资源,保持原生写法即可,如下:

axios.get("versions.json").then(
    res => {
        if (res.status == 200) {
            console.log(res);
        }
    },
    err => {
        console.log(err);
    }
);

文章作者: 弈心
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 弈心 !
评论
  目录