Electron的简单打包
首先,先将Angular的工程打包:
ng build --aot --prod
Electron打包:
-
全局安装Electron
cnpm install electron -g
-
全局安装electron-prebuilt
cnpm install electron-prebuilt -g
-
全局安装electron-packager
cnpm install electron-packager -g
-
package.json:
{ "name" : "your-app", "version" : "0.1.0", "main" : "main.js", "scripts": { "start": "electron .", "package": "electron-packager ./ --all --out app --version 1.4.0 --overwrite --icon=./src/img/weather.ico" } }
我没定义图标,最后那个也就没写了。
-
main.js,叫啥名,不重要,重要的是跟上面一致
const electron = require('electron'); // 控制应用生命周期的模块 const {app} = electron; // 创建本地浏览器窗口的模块 const {BrowserWindow} = electron; // 指向窗口对象的一个全局引用,如果没有这个引用,那么当该javascript对象被垃圾回收的 // 时候该窗口将会自动关闭 let win; function createWindow() { // 创建一个新的浏览器窗口 win = new BrowserWindow({width: 1920, height: 1080}); // 并且装载应用的index.html页面 win.loadURL(`file://${__dirname}/index.html`); // 打开开发工具页面 //win.webContents.openDevTools(); // 当窗口关闭时调用的方法 win.on('closed', () => { // 解除窗口对象的引用,通常而言如果应用支持多个窗口的话,你会在一个数组里 // 存放窗口对象,在窗口关闭的时候应当删除相应的元素。 win = null; }); } // 当Electron完成初始化并且已经创建了浏览器窗口,则该方法将会被调用。 // 有些API只能在该事件发生后才能被使用。 app.on('ready', createWindow); /* var mainWindow = new BrowserWindow({ webPreferences: { nodeIntegration: false } }); */ // 当所有的窗口被关闭后退出应用 app.on('window-all-closed', () => { // 对于OS X系统,应用和相应的菜单栏会一直激活直到用户通过Cmd + Q显式退出 if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { // 对于OS X系统,当dock图标被点击后会重新创建一个app窗口,并且不会有其他 // 窗口打开 if (win === null) { createWindow(); } }); // 在这个文件后面你可以直接包含你应用特定的由主进程运行的代码。 // 也可以把这些代码放在另一个文件中然后在这里导入。
这个,太长了,我写的比较短:
const { app, BrowserWindow } = require('electron') let win; const createWindow = () => { win = new BrowserWindow({ width: 700, height: 500, show: false, }); win.loadURL(`file://${__dirname}/index.html`); //win.loadURL(`http://localhost/sb-admin-v2/index.html`); //win.webContents.openDevTools(); win.on('closed', () => win = null) win.on('ready-to-show', () => { win.show() win.focus() }) } app.on('ready', _ => createWindow()) app.on('window-all-closed', _ => process.platform !== 'darwin' && app.quit()) app.on('activate', _ => win === null && createWindow())
-
运行:
npm run-script package
第一次会下各种平台依赖包,后面就会比较快了。
参考:
可能会用到: