在項(xiàng)目中,經(jīng)常會(huì)遇到一些導(dǎo)出固定格式文件的需求。這種需求通常需要提前準(zhǔn)備一個(gè)模板(例如word、excel等)保存在項(xiàng)目中,但electron默認(rèn)會(huì)對(duì)應(yīng)用程序的代碼使用asar壓縮打包,打包以后就沒(méi)有辦法獲取到模板文件了,不打包又不夠安全,代碼容易被解密,那辛辛苦苦寫的東西就會(huì)被別人輕而易舉的讀取,如果含有保密的信息或者加密的代碼呢,后果很嚴(yán)重。所以,一定要用asar打包,那模板的問(wèn)題怎么辦?
我找了很多資料來(lái)尋找解決的辦法,找到一個(gè)最簡(jiǎn)單最快捷最有效的辦法——配置package。在項(xiàng)目下新建一個(gè)文件夾extra,里面存放的是需要打包進(jìn)安裝包的文件,將這個(gè)文件夾配置到package里面即可,不需要寫任何代碼。調(diào)用的時(shí)候只需要獲取.exe的完整路徑,然后就可以找到安裝后的模板文件夾路徑了。網(wǎng)上講的最多的一個(gè)參數(shù)是extraResources,安裝應(yīng)用后路徑為```安裝目錄/resources/extra```,但是這種方法同樣要求不許用asar打包。要是能放在```安裝目錄/extra```里多好,就一點(diǎn)問(wèn)題都沒(méi)有了。
事實(shí)是,真的可以?。?!步驟如下:
- 搭建electron-vue框架
前面有詳細(xì)的介紹,這里就不再贅述了。Electron+Vue開(kāi)發(fā)輕量級(jí)應(yīng)用 - 項(xiàng)目下新建文件夾extra,與src、dist、build同級(jí),將模板文件或者其他一些想直接打包進(jìn)安裝包的文件丟進(jìn)去
3.配置package,將新建的文件夾配置到extraFiles中
{
"build": {
……
"extraFiles": [
"extra/**"
],
"asar": true,
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
},
……
}
}
4.開(kāi)發(fā)環(huán)境和正式環(huán)境調(diào)用extra文件夾中的內(nèi)容
import path from 'path'
import { app } from 'electron'
const helpPath = path.join(path.dirname(app.getPath('exe')), '/extra/模板文件.docx')
// 這就是文件的絕對(duì)路徑了,可以為所欲為了