Javascript 使用electron在app.asar中包含额外文件
这是一款带有electron builder的Vue应用程序Javascript 使用electron在app.asar中包含额外文件,javascript,vue.js,electron,Javascript,Vue.js,Electron,这是一款带有electron builder的Vue应用程序 { "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "electron:build": "vue-cli-service electron:build", "electron:serve": "vue-cli-service electron:serve", "postinsta
{
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"electron:build": "vue-cli-service electron:build",
"electron:serve": "vue-cli-service electron:serve",
"postinstall": "electron-builder install-app-deps",
"postuninstall": "electron-builder install-app-deps",
},
"main": "background.js",
"dependencies": {
"core-js": "^3.6.5",
"vue": "^2.6.11",
"vue-class-component": "^7.2.3",
"vue-property-decorator": "^8.4.2",
"vue-router": "^3.3.2",
"vuetify": "^2.2.33"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.4.0",
"@vue/cli-plugin-eslint": "~4.4.0",
"@vue/cli-plugin-router": "~4.4.0",
"@vue/cli-plugin-typescript": "~4.4.0",
"@vue/cli-service": "~4.4.0",
"electron": "^6.1.12",
"typescript": "^3.9.5",
"vue-cli-plugin-electron-builder": "~1.4.6",
"vue-cli-plugin-vuetify": "~2.0.5",
"vue-template-compiler": "^2.6.11",
"vuetify-loader": "^1.3.0"
}
}
当我使用npm run-electron:build
时,会生成以下结构:
这是app.asar的内容:
background.js包含所有依赖项。有些外部模块(来自节点模块)使用类似于fs.readFile(\uu dirpath+'/file')
的方式读取文件。正如预期的那样,这些文件不包括在生成的包中,因此我需要添加它们
我尝试在vue.config.js中使用此选项:
module.exports = {
lintOnSave: true,
transpileDependencies: [
'vuetify'
],
configureWebpack: {
devtool: 'source-map'
},
pluginOptions: {
electronBuilder: {
builderOptions: {
extraFiles: [
'node_modules/module/file'
]
}
}
}
}
但是该文件包含在app.asar之外,即使有外部资源
,因此fs.readFile(uu dirpath+'/file')
没有找到该文件
如何在app.asar中包含文件?我找到的唯一方法是使用公共目录。
public/
中的任何文件都将复制到app.asar
但是,我需要复制的文件属于一个外部库,所以为了不让这个文件成为我项目的一部分,我忽略了它,并在构建之前使用npm脚本进行复制
"scripts": {
"build": "cp node_modules/lib/file public && vue-cli-service electron:build -wl",
"serve": "mkdir -p dist_electron && cp node_modules/lib/file dist_electron && vue-cli-service electron:serve"
}
我不知道vue是如何捆绑您的文件的,但electron builder配置中的
extraResources
和extraFiles
与您想要做的恰恰相反:将文件包含在安装程序中,但不包含在asar中。数组可以做到这一点,因为它指定哪些文件要包含在bundle.interest中。它有一个默认值,我应该重复所有这些内容,然后添加我的文件,还是只添加我的文件?文件:['**/','**/node\u modules/lib/file']
。我没有工作。但我喜欢另一种方式,在dir'public'中添加文件。因为它属于一个外部库,所以我忽略了这个文件,并在构建之前复制它(使用npm脚本)。你有没有找到更好的方法,或者这真的是最好的方法?“文件”不起作用似乎很疯狂,但我也无法让它起作用。