diff --git a/main.js b/main.js deleted file mode 100644 index c540103..0000000 --- a/main.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -try { - const electron = require('electron'); - - // Module to control application life. - const { app } = electron; - // Module to create native browser window. - const { BrowserWindow } = electron; - - let win, serve; - const args = process.argv.slice(1); - serve = args.some(val => val === "--serve"); - - if (serve) { - require('electron-reload')(__dirname + '/dist', { - }); - } - - function createWindow() { - - let electronScreen = electron.screen; - let size = electronScreen.getPrimaryDisplay().workAreaSize; - - // Create the browser window. - win = new BrowserWindow({ - x: 0, - y: 0, - width: size.width, - height: size.height - }); - - let url = serve ? - 'file://' + __dirname + '/dist/index.html' : - 'file://' + __dirname + '/index.html'; - - // and load the index.html of the app. - win.loadURL(url); - - // Open the DevTools. - if (serve) { - win.webContents.openDevTools(); - } - - // Emitted when the window is closed. - win.on('closed', () => { - // Dereference the window object, usually you would store window - // in an array if your app supports multi windows, this is the time - // when you should delete the corresponding element. - win = null; - }); - } - - - // This method will be called when Electron has finished - // initialization and is ready to create browser windows. - // Some APIs can only be used after this event occurs. - app.on('ready', createWindow); - - // Quit when all windows are closed. - app.on('window-all-closed', () => { - // On OS X it is common for applications and their menu bar - // to stay active until the user quits explicitly with Cmd + Q - if (process.platform !== 'darwin') { - app.quit(); - } - }); - - app.on('activate', () => { - // On OS X it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (win === null) { - createWindow(); - } - }); - - -} catch (e) { - // Catch Error - throw e; -} diff --git a/main.ts b/main.ts new file mode 100644 index 0000000..bd3a655 --- /dev/null +++ b/main.ts @@ -0,0 +1,71 @@ +import { app, BrowserWindow, screen } from 'electron'; +import * as path from 'path'; + + +let win, serve; +const args = process.argv.slice(1); +serve = args.some(val => val === "--serve"); + +if (serve) { + require('electron-reload')(__dirname, { + }); +} + +function createWindow() { + + let electronScreen = screen; + let size = electronScreen.getPrimaryDisplay().workAreaSize; + + // Create the browser window. + win = new BrowserWindow({ + x: 0, + y: 0, + width: size.width, + height: size.height + }); + + // and load the index.html of the app. + win.loadURL('file://' + __dirname + '/index.html'); + + // Open the DevTools. + if (serve) { + win.webContents.openDevTools(); + } + + // Emitted when the window is closed. + win.on('closed', () => { + // Dereference the window object, usually you would store window + // in an array if your app supports multi windows, this is the time + // when you should delete the corresponding element. + win = null; + }); +} + +try { + + // This method will be called when Electron has finished + // initialization and is ready to create browser windows. + // Some APIs can only be used after this event occurs. + app.on('ready', createWindow); + + // Quit when all windows are closed. + app.on('window-all-closed', () => { + // On OS X it is common for applications and their menu bar + // to stay active until the user quits explicitly with Cmd + Q + if (process.platform !== 'darwin') { + app.quit(); + } + }); + + app.on('activate', () => { + // On OS X it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (win === null) { + createWindow(); + } + }); + +} catch (e) { + // Catch Error + //throw e; +} diff --git a/package.json b/package.json index c4d30b2..091fc31 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,11 @@ "ng": "ng", "lint": "ng lint", "start": "webpack --watch", - "start:web": "webpack-dev-server . --port 4200", - "build": "webpack --display-error-details && copyfiles main.js package.json dist", - "dependencies:prod": "cd ./dist && npm install --only=prod && cd ..", + "start:web": "webpack-dev-server --content-base . --port 4200 --inline", + "build:electron:main": "tsc main.ts --outDir dist && copyfiles package.json dist", + "build": "webpack --display-error-details && npm run build:electron:main", "build:prod": "cross-env NODE_ENV='production' npm run build", - "electron:serve": "electron . --serve", + "electron:serve": "npm run build:electron:main && electron ./dist --serve", "electron:test": "electron ./dist", "electron:dev": "npm run build && electron dist/main.js", "electron:prod": "npm run build:prod && electron dist/main.js", @@ -31,8 +31,8 @@ "electron:windows": "npm run build:prod && node package.js --asar --platform=win32 --arch=ia32", "electron:mac": "npm run build:prod && node package.js --asar --platform=darwin --arch=x64", "test": "karma start ./karma.conf.js", - "e2e": "protractor ./protractor.conf.js", - "pree2e": "webdriver-manager update --standalone false --gecko false --quiet" + "pree2e": "webdriver-manager update --standalone false --gecko false --quiet && npm run build", + "e2e": "protractor ./protractor.conf.js" }, "dependencies": { "@angular/common": "4.0.2", diff --git a/protractor.conf.js b/protractor.conf.js index 0744e05..d112509 100644 --- a/protractor.conf.js +++ b/protractor.conf.js @@ -12,7 +12,7 @@ exports.config = { 'browserName': 'chrome', chromeOptions: { binary: './node_modules/electron/dist/electron.exe', - args: ['--test-type=webdriver', 'app=main.js'] + args: ['--test-type=webdriver', 'app=dist/main.js'] } }, directConnect: true,