From 345aab293441fb340fb72c3d600b2d236bfc81b3 Mon Sep 17 00:00:00 2001 From: rdc-justep Date: Thu, 21 Jul 2016 20:07:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/im.icns | Bin 0 -> 961 bytes assets/im.ico | Bin 0 -> 1150 bytes build/background.png | Bin 0 -> 1177 bytes build/icon.icns | Bin 0 -> 961 bytes build/icon.ico | Bin 0 -> 1150 bytes icon.png | Bin 0 -> 1177 bytes images/blank.png | Bin 0 -> 221 bytes images/im.png | Bin 0 -> 1177 bytes index.html | 51 +++++++ main.js | 320 +++++++++++++++++++++++++++++++++++++++++++ package.json | 20 +++ 11 files changed, 391 insertions(+) create mode 100644 assets/im.icns create mode 100644 assets/im.ico create mode 100644 build/background.png create mode 100644 build/icon.icns create mode 100644 build/icon.ico create mode 100644 icon.png create mode 100644 images/blank.png create mode 100644 images/im.png create mode 100644 index.html create mode 100644 main.js create mode 100644 package.json diff --git a/assets/im.icns b/assets/im.icns new file mode 100644 index 0000000000000000000000000000000000000000..28ecfa9aa820e2cf60f9675970c94729ee8d32a1 GIT binary patch literal 961 zcmY+9U1$_n6vuC7b~f{MXLj>p*2Ki!o!O1M`Pfz|6e_i^1<{AJeJO#0BBZ5#3HWB2 zO}6SwwGwE>T1wjoO9i1IzHF13y*D)>u`#C95M0#K)EJuV&YEoYbLRH0sOWvT=l;(5 z|Iayhn(F6MdV16|aixEb~6leZEe-+~~Bv{tM-9>C7L_x}A9@d=le|Ic| zv4LbfxkTJbxnke4a3+a%n~zDYTr6y5P1*!ubG|~VrDCCQ&ood!M(GEnUMX$axh0d9 zGm}ddw^}YfvDarU%GOG)QQo%gRcsk_);e+BYO#>F?`Ou4IJ5lklTv9rzxjYt+)B?b z-_5RX=GPkDDTF7p?)qPI3)y=!bQL<=nkx`{{S1Aw=^7x>1Yr1IXkJ~-6Iz}DT00cBMZQX9F2Zw_+M-(kQJKR80RS8iID z_HlkMgbEa{kbf4_KVE*{qtI@C=C!rz{ka?8T{y}q)UALN*<8j~FP?sbRp~5nc&)yA zJN?td$vs{w_nfdvE<1bu+jGYiQGufO3UNwV>*t9xL%ac@PY8bWHCmkh<=p2(l5D^} z#S3B|4t;#)tTEg!C=kFFaI$*wo#4RXLoJdb`(%|%+(Hk~2Nso523>8KP2lS*SMs_j4t9FF?68%X{)^!L# zv%gF4AB=~`G$GXCQ`>uDgN>%59^D)03B?lBIIi*0HfB#O5{<`FTC?8G2L_^{@M+DX zhk_BEMn%_j8b{y!^b-J@c)&C<2aG>*_VW3+y?_BMkWW3@sk&}$XJcX)V4I{%#B~Tg z^iFpIaEdrjkr1a&zUN#T)x5GC(|f N?eAQEH9f3S_#anS@3a5_ literal 0 HcmV?d00001 diff --git a/assets/im.ico b/assets/im.ico new file mode 100644 index 0000000000000000000000000000000000000000..0182ebe9fb6a15b86ebf57fbb9cd0ad48ac330a3 GIT binary patch literal 1150 zcmZuwOK%%h7`?G$=V3c`UQLuViQ_wV>a=!1h!quOi&V9X3N|Pb3xp6qpu3_hD$0gJ z6$z>WLcpR3q^_!NOycoOX``g1X%LN~T5S=bX+&a=n}?q>hjYhefz+{%uYJGoeDj^} zAw&y5k%-`TRD94X#33QX5rS8|Y2Nb?g0>euGGutvz1CrN%HEr&HDC6cCg%T?t=WPM z<%+a#$Sxxz!{)RMnPKJoABU&6`QIFrVdFc^tM86SZ&#vk{@#cu@7P+W;mC;DpkGx6 za{D}Q5Gp+tqsa{#3^{DN3}&XED5A%i)PcbAxS zV~BY#e_xV4CK6(<-gh?dcxny~U*1CUjXw~NE+Uay#^lL7k|!QGvgdYP26V_S^EzX7 zk$arlwl%-*Bt*s;OD!f8gSN7R?tBfy`aZNDOE@-5{soKthpG-rzk*F{5~X;n?i_l59UiOh#_$&! z2$N?Fm!Si-pwjJ4F`dZ8v5>5 zFp}9v;)iEQ&ss>G-GX*_0n+c*PiZJp%RTn4&Uly*8T6iinjv7dL5 zy38CtE@0x-Rm8kmkfZY7AZCaI*=^c!PZpyuEx9?g)_|^uH4H445xudG+pRQ@~#mt6HnFqdD>b>7Qw4e-5dgc)zP=o)DZu^g!I?Dn0zbmaIV=u!(uH? zJ)gsKajlaKzg#<^qG~thFWn!4bOMa@Q}wmOb`3<3S-aE_FKX;UxDEo^ZW!DwxYmuY4{{n3C`}Y6< literal 0 HcmV?d00001 diff --git a/build/background.png b/build/background.png new file mode 100644 index 0000000000000000000000000000000000000000..a615e4fc8b3fd35f625c434623435e95d19ef2f7 GIT binary patch literal 1177 zcmV;K1ZMk*P)+5!X+BUD*A3#ZEO|0)Rr42*}kmH+<- z3IPNV14s&p|Nr~S`v3D9<^LcyNOOgF%x8vQSHu{8Uf>3)V*m&sm?0_u|1h*LvM_*+ z2C4in68L4d`SFk9G6C!$Bbh;h44MmGG5mSP&G7C1KM?mB)BoR$3_ox2F#LJS!|?IO zACTY)CPvo(3NKc%FZ`+Z;TA~-|sMp1^s4V{LaN7;l#n9p3TMZ{~yBxp!|H0!WKTW9}Mboirx z3|u@ARX`vGb0ZAQ`~R20i;)=|9!G#U6o~(VBme?1NyaP<#9$bHliVG)f|he~(cLP= zK|vIun+Ogr{TXik6At3qAK>6p{Sj_jaHv)~D7v%-vFf#F_0q&Qcbph_3HiP!`I7g` ze{hLv5Zq+B4n%tQPVS-`P4_CVWcD^%y|CPfx77^p8N1D)I(4WciLI9>__GRyMTN>q z0VY9(xpM~{JG!*<1*;`Y`aAwI2XxDpl&zfrX)! zs(t`a#Q+iwr3v}t{4;UR*XMO&f^yO$pC#Ypd!P4rH`^Lnv_rjR;#otSB7&GIXs9_> z>s!zRe&k?ClTZ9^mue@A6EiXSOjYDXwxnExXWy!L_#!~m@}TQ3jPEc;7oA@Y&faT; zzF|^0<&u|FQ%n|w*Te{{U5>@_!S&dv>C(u7ZW7Ud4#H|0=}a0+Z#>u;OL#7Gm6W_L zX8V+vY&GoKc>L}L`PV%%KJI$_^e1!n&I}X}q=xR9g!!0WCV}TNivkO|jXp{rYVe*g z{lJdNhz;;_?`$oxmN?M9A3pnakc#^MN=dGn+*v5Xauzg z%D&$_G^7DfIgw*v%ViJ^Ex3>@?>nv z^f#5GzAMM98k!Xv8R>4kL81gEZ7`3Rin7J9w^3+G7 ru_YO%=g0hydp*2Ki!o!O1M`Pfz|6e_i^1<{AJeJO#0BBZ5#3HWB2 zO}6SwwGwE>T1wjoO9i1IzHF13y*D)>u`#C95M0#K)EJuV&YEoYbLRH0sOWvT=l;(5 z|Iayhn(F6MdV16|aixEb~6leZEe-+~~Bv{tM-9>C7L_x}A9@d=le|Ic| zv4LbfxkTJbxnke4a3+a%n~zDYTr6y5P1*!ubG|~VrDCCQ&ood!M(GEnUMX$axh0d9 zGm}ddw^}YfvDarU%GOG)QQo%gRcsk_);e+BYO#>F?`Ou4IJ5lklTv9rzxjYt+)B?b z-_5RX=GPkDDTF7p?)qPI3)y=!bQL<=nkx`{{S1Aw=^7x>1Yr1IXkJ~-6Iz}DT00cBMZQX9F2Zw_+M-(kQJKR80RS8iID z_HlkMgbEa{kbf4_KVE*{qtI@C=C!rz{ka?8T{y}q)UALN*<8j~FP?sbRp~5nc&)yA zJN?td$vs{w_nfdvE<1bu+jGYiQGufO3UNwV>*t9xL%ac@PY8bWHCmkh<=p2(l5D^} z#S3B|4t;#)tTEg!C=kFFaI$*wo#4RXLoJdb`(%|%+(Hk~2Nso523>8KP2lS*SMs_j4t9FF?68%X{)^!L# zv%gF4AB=~`G$GXCQ`>uDgN>%59^D)03B?lBIIi*0HfB#O5{<`FTC?8G2L_^{@M+DX zhk_BEMn%_j8b{y!^b-J@c)&C<2aG>*_VW3+y?_BMkWW3@sk&}$XJcX)V4I{%#B~Tg z^iFpIaEdrjkr1a&zUN#T)x5GC(|f N?eAQEH9f3S_#anS@3a5_ literal 0 HcmV?d00001 diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0182ebe9fb6a15b86ebf57fbb9cd0ad48ac330a3 GIT binary patch literal 1150 zcmZuwOK%%h7`?G$=V3c`UQLuViQ_wV>a=!1h!quOi&V9X3N|Pb3xp6qpu3_hD$0gJ z6$z>WLcpR3q^_!NOycoOX``g1X%LN~T5S=bX+&a=n}?q>hjYhefz+{%uYJGoeDj^} zAw&y5k%-`TRD94X#33QX5rS8|Y2Nb?g0>euGGutvz1CrN%HEr&HDC6cCg%T?t=WPM z<%+a#$Sxxz!{)RMnPKJoABU&6`QIFrVdFc^tM86SZ&#vk{@#cu@7P+W;mC;DpkGx6 za{D}Q5Gp+tqsa{#3^{DN3}&XED5A%i)PcbAxS zV~BY#e_xV4CK6(<-gh?dcxny~U*1CUjXw~NE+Uay#^lL7k|!QGvgdYP26V_S^EzX7 zk$arlwl%-*Bt*s;OD!f8gSN7R?tBfy`aZNDOE@-5{soKthpG-rzk*F{5~X;n?i_l59UiOh#_$&! z2$N?Fm!Si-pwjJ4F`dZ8v5>5 zFp}9v;)iEQ&ss>G-GX*_0n+c*PiZJp%RTn4&Uly*8T6iinjv7dL5 zy38CtE@0x-Rm8kmkfZY7AZCaI*=^c!PZpyuEx9?g)_|^uH4H445xudG+pRQ@~#mt6HnFqdD>b>7Qw4e-5dgc)zP=o)DZu^g!I?Dn0zbmaIV=u!(uH? zJ)gsKajlaKzg#<^qG~thFWn!4bOMa@Q}wmOb`3<3S-aE_FKX;UxDEo^ZW!DwxYmuY4{{n3C`}Y6< literal 0 HcmV?d00001 diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a615e4fc8b3fd35f625c434623435e95d19ef2f7 GIT binary patch literal 1177 zcmV;K1ZMk*P)+5!X+BUD*A3#ZEO|0)Rr42*}kmH+<- z3IPNV14s&p|Nr~S`v3D9<^LcyNOOgF%x8vQSHu{8Uf>3)V*m&sm?0_u|1h*LvM_*+ z2C4in68L4d`SFk9G6C!$Bbh;h44MmGG5mSP&G7C1KM?mB)BoR$3_ox2F#LJS!|?IO zACTY)CPvo(3NKc%FZ`+Z;TA~-|sMp1^s4V{LaN7;l#n9p3TMZ{~yBxp!|H0!WKTW9}Mboirx z3|u@ARX`vGb0ZAQ`~R20i;)=|9!G#U6o~(VBme?1NyaP<#9$bHliVG)f|he~(cLP= zK|vIun+Ogr{TXik6At3qAK>6p{Sj_jaHv)~D7v%-vFf#F_0q&Qcbph_3HiP!`I7g` ze{hLv5Zq+B4n%tQPVS-`P4_CVWcD^%y|CPfx77^p8N1D)I(4WciLI9>__GRyMTN>q z0VY9(xpM~{JG!*<1*;`Y`aAwI2XxDpl&zfrX)! zs(t`a#Q+iwr3v}t{4;UR*XMO&f^yO$pC#Ypd!P4rH`^Lnv_rjR;#otSB7&GIXs9_> z>s!zRe&k?ClTZ9^mue@A6EiXSOjYDXwxnExXWy!L_#!~m@}TQ3jPEc;7oA@Y&faT; zzF|^0<&u|FQ%n|w*Te{{U5>@_!S&dv>C(u7ZW7Ud4#H|0=}a0+Z#>u;OL#7Gm6W_L zX8V+vY&GoKc>L}L`PV%%KJI$_^e1!n&I}X}q=xR9g!!0WCV}TNivkO|jXp{rYVe*g z{lJdNhz;;_?`$oxmN?M9A3pnakc#^MN=dGn+*v5Xauzg z%D&$_G^7DfIgw*v%ViJ^Ex3>@?>nv z^f#5GzAMM98k!Xv8R>4kL81gEZ7`3Rin7J9w^3+G7 ru_YO%=g0hyd+5!X+BUD*A3#ZEO|0)Rr42*}kmH+<- z3IPNV14s&p|Nr~S`v3D9<^LcyNOOgF%x8vQSHu{8Uf>3)V*m&sm?0_u|1h*LvM_*+ z2C4in68L4d`SFk9G6C!$Bbh;h44MmGG5mSP&G7C1KM?mB)BoR$3_ox2F#LJS!|?IO zACTY)CPvo(3NKc%FZ`+Z;TA~-|sMp1^s4V{LaN7;l#n9p3TMZ{~yBxp!|H0!WKTW9}Mboirx z3|u@ARX`vGb0ZAQ`~R20i;)=|9!G#U6o~(VBme?1NyaP<#9$bHliVG)f|he~(cLP= zK|vIun+Ogr{TXik6At3qAK>6p{Sj_jaHv)~D7v%-vFf#F_0q&Qcbph_3HiP!`I7g` ze{hLv5Zq+B4n%tQPVS-`P4_CVWcD^%y|CPfx77^p8N1D)I(4WciLI9>__GRyMTN>q z0VY9(xpM~{JG!*<1*;`Y`aAwI2XxDpl&zfrX)! zs(t`a#Q+iwr3v}t{4;UR*XMO&f^yO$pC#Ypd!P4rH`^Lnv_rjR;#otSB7&GIXs9_> z>s!zRe&k?ClTZ9^mue@A6EiXSOjYDXwxnExXWy!L_#!~m@}TQ3jPEc;7oA@Y&faT; zzF|^0<&u|FQ%n|w*Te{{U5>@_!S&dv>C(u7ZW7Ud4#H|0=}a0+Z#>u;OL#7Gm6W_L zX8V+vY&GoKc>L}L`PV%%KJI$_^e1!n&I}X}q=xR9g!!0WCV}TNivkO|jXp{rYVe*g z{lJdNhz;;_?`$oxmN?M9A3pnakc#^MN=dGn+*v5Xauzg z%D&$_G^7DfIgw*v%ViJ^Ex3>@?>nv z^f#5GzAMM98k!Xv8R>4kL81gEZ7`3Rin7J9w^3+G7 ru_YO%=g0hyd + + + + + + + + + + + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..d0d6fd3 --- /dev/null +++ b/main.js @@ -0,0 +1,320 @@ + +'use strict'; +//正式产品发布首页 +const appUrl = 'https://im.justep.com:9072/x5/UI2/chat/bex5/pc/index.w'; +//为了提升通用app体验的首页 +//const appUrl = 'file://'+ __dirname+'/index.html'; +//开发测试地址 +//const appUrl = 'http://192.168.1.87:8080/x5/UI2/chat/bex5/pc/index.w'; +const electron = require('electron'); +const app = electron.app; +const BrowserWindow = electron.BrowserWindow; +const Menu = electron.Menu; +const MenuItem = electron.MenuItem; +const Tray = electron.Tray; +const shell = electron.shell; +const clipboard = electron.clipboard; +const dialog = electron.dialog; +const path = require('path'); +const execFile = require('child_process').execFile; +const exec = require('child_process').exec; + +const os = require('os'); + +const notifier = require('node-notifier'); + +console.log(process.platform); + + +var appTray = null; +var appName = "铛铛"; + +var mainWindow; +app.setPath("userData", path.join(__dirname, "userData")); +app.commandLine.appendSwitch("disable-renderer-backgrounding"); + +// Quit when all windows are closed. +app.on('window-all-closed', function() { +}); + +app.on('quit', function() { + if(null != mainWindow) { + mainWindow = null; + } +}); +var isRequestQuit = false; +app.on('before-quit', function() { + isRequestQuit = true; +}); + + +//保证只有一个msg运行 +var shouldQuit = app.makeSingleInstance(function (commandLine, workingDirectory) { + // 当另一个实例运行的时候,这里将会被调用,我们需要激活应用的窗口 + if (mainWindow) { + if (mainWindow.isMinimized()) { + mainWindow.restore(); + } + mainWindow.focus(); + } + return true; +}); +// 这个实例是多余的实例,需要退出 +if (shouldQuit) { + app.quit(); + return; +} + +var windowStateKeeper = require('electron-window-state'); + +function showWindow() { + if (mainWindow) { + return; + } + + var mainWindowState = windowStateKeeper({ + defaultWidth: 1100, + defaultHeight: 800 + }); + + // Create the window using the state information + mainWindow = new BrowserWindow({ + 'x': mainWindowState.x, + 'y': mainWindowState.y, + 'width': mainWindowState.width, + 'height': mainWindowState.height, + title: appName, + icon: __dirname + '/assets/im.ico' + }); + + mainWindowState.manage(mainWindow); + + mainWindow.loadURL(appUrl); + if(process.argv[2] === "--dev"){ + mainWindow.webContents.openDevTools(); + } + + //mainWindow.loadURL('http://m.taobao.com'); + //mainWindow.loadURL("https://im.justep.com:9072/x5/UI2/chat/pc/index.w?inElectron=1"); + + mainWindow.on('close', function (e) { + if(!isRequestQuit){ + e.preventDefault(); + mainWindow.hide(); + } + }); + + mainWindow.on('closed', function() { + }); + + mainWindow.on('focus', function() { + mainWindow.webContents.send('window', 'focus'); + }); + + mainWindow.on('blur', function() { + mainWindow.webContents.send('window', 'blur'); + }); + + mainWindow.on('minimize', function() { + mainWindow.hide(); + mainWindow.webContents.send('window', 'minimize'); + }); + + mainWindow.on('restore', function() { + mainWindow.webContents.send('window', 'restore'); + }); + + + + + mainWindow.webContents.on('will-navigate', function(e, url) { + if(!/^(http|https)/g.test(url)){ + e.preventDefault(); + } + }); + + mainWindow.webContents.on('new-window', function(e, url) { + e.preventDefault(); + shell.openExternal(url); + }); + + + //支持下载 + mainWindow.webContents.session.on('will-download', function(e, item) { + // By default electron doesn't + var savePath = dialog.showSaveDialog(mainWindow, { defaultPath: item.getFilename() }); + if (savePath != undefined) { + item.setSavePath(savePath) + } else { + item.cancel() + return + } + console.log(savePath); + console.log(item.getMimeType()); + console.log(item.getFilename()); + console.log(item.getTotalBytes()); + item.on('updated', function() { + //mainWindow.setProgressBar(item.getReceivedBytes() / item.getTotalBytes()); + console.log('Received bytes: ' + item.getReceivedBytes()); + }); + item.on('done', function(e, state) { + if (state == "completed") { + //mainWindow.setProgressBar(0); + var nf = new notifier.Notification({ + withFallback: true + }); + nf.notify({ + title: appName, + message: '文件下载完毕,点击打开查看', + icon: path.join(__dirname,'/images/im.png'), + sound: true, // Only Notification Center or Windows Toasters + wait: true // Wait with callback, until user action is taken against notification + }); + nf.on('click', function (notifierObject, options) { + console.log("savePath:" + savePath); + var opened = shell.openItem(savePath); + console.log("open success:" + opened); + }); + } else { + console.log("Download is cancelled or interrupted that can't be resumed"); + } + }) + }) +} + +app.on('activate-with-no-open-windows', showWindow); + + + +app.on('ready', function () { + appTray = new Tray(__dirname + '/images/im.png'); + appTray.on('click', function (event, bounds) { + mainWindow.show(); + }); + + appTray.setToolTip(appName); + var ctxMenu = Menu.buildFromTemplate([ + { + label: '打开' + appName, type: 'normal', click: function () { + mainWindow.show(); + } + }, + {type: 'separator'}, + { + label: '退出' + appName, type: 'normal', click: function () { + app.exit(0); + } + } + ]); + appTray.setContextMenu(ctxMenu); + showWindow(); +}); + +// 消息通信 +var ipcMain = require('electron').ipcMain; +ipcMain.on('notification', function (event, arg) { + arg = JSON.parse(arg); + arg.icon = path.join(__dirname,"images/im.png"); + var nf = new notifier.Notification({ + withFallback: true + }); + nf.notify({ + icon:arg.icon, + subtitle:arg.title, + title:arg.title, + contentImage:arg.icon, + wait:true, + message:arg.body || " " + }); + nf.on('click',function(){ + console.log('notification click'); + mainWindow.show(); + }); +}); + +ipcMain.on('newMessage', function (event, arg) { + console.log("arg:" + arg); + arg = JSON.parse(arg); + if(arg.counter > 0 && !appTray.interval){ + appTray.interval = setInterval(function(){ + if(appTray.isBlank){ + appTray.setImage(__dirname + '/images/im.png'); + appTray.isBlank = false; + }else{ + appTray.setImage(__dirname + '/images/blank.png'); + appTray.isBlank = true; + } + },600); + }else if(arg.counter == 0){ + appTray.setImage(__dirname + '/images/im.png'); + appTray.isBlank = false; + clearInterval(appTray.interval); + appTray.interval = undefined; + } + if (process.platform == 'darwin') { + app.dock.bounce(); + app.dock.setBadge(arg.counter == 0?"": arg.counter + ""); + } +}); + +ipcMain.on('screenCapture', function (event, arg) { + clipboard.writeText('铛铛截屏失败...'); + mainWindow.hide(); + if(process.platform == "win32"){ + execFile(path.join(__dirname,'360screener.exe'), function(err, data) { + if(!err){ + console.log("capture end no err"); + var text = clipboard.readText(); + if(text !== '铛铛截屏失败...'){ + mainWindow.show(); + event.returnValue = true; + return; + } + } + mainWindow.show(); + event.returnValue = false; + }); + }else if(process.platform == "darwin"){ + console.log("exec screencapture "); + exec("screencapture -i -c", function(err, data) { + if(!err){ + var text = clipboard.readText(); + if(text !== '铛铛截屏失败...'){ + mainWindow.show(); + event.returnValue = true; + return; + } + } + mainWindow.show(); + event.returnValue = false; + }); + } + +}); + +// Adding tray +ipcMain.on('new-messages-show', function(event, arg) { + if (process.platform == 'darwin') { + app.dock.bounce(); + app.dock.setBadge('.'); + } +}); + +ipcMain.on('tray-badge', function(event, arg) { + if (process.platform == 'darwin') { + app.dock.bounce(); + app.dock.setBadge(arg.count.toString()); + } +}); + +ipcMain.on('new-messages-hide', function(event, arg) { + if (process.platform == 'darwin') { + app.dock.setBadge(''); + } +}); + +ipcMain.on('tray-bounce', function(event, arg) { + if (process.platform == 'darwin') { + app.dock.bounce(); + } +}); diff --git a/package.json b/package.json new file mode 100644 index 0000000..6de661d --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "dangTalk", + "productName": "dangTalk", + "description": "开源企业im", + "homepage": "http://www.wex5.com/im/", + "version": "5.3.5", + "main": "main.js", + "scripts": { + "start": "electron . --dev", + "buildmac": "electron-packager . 铛铛 --icon=assets/im --platform=darwin --arch=all --app-bundle-id=com.justep.im --out=dist --version=1.2.5", + "buildwin": "electron-packager . 铛铛 --icon=assets/im --platform=win32 --arch=all --app-bundle-id=com.justep.im --out=dist --version=1.2.5", + "buildlinux": "electron-packager . 铛铛 --icon=assets/im --platform=linux --arch=all --app-bundle-id=com.justep.im --out=dist --version=1.2.5" + }, + "dependencies": { + "electron-window-state": "^3.0.3", + "node-notifier": "^4.6.0", + "path": "^0.12.7" + }, + "devDependencies": {} +}