diff --git a/.travis.yml b/.travis.yml index 777cd170..b27f131c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ install: before_script: - npm run build - npm run build:test + - npm run build:electron - npm run lint script: diff --git a/package.json b/package.json index 3bf25aa9..c6155d66 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "@ngrx/store-devtools": "3.2.2", "@ngrx/store-log-monitor": "3.0.2", "@types/core-js": "0.9.35", + "@types/electron": "^1.4.29", "@types/jquery": "2.0.34", "@types/node": "6.0.52", "copy-webpack-plugin": "^4.0.1", @@ -61,8 +62,9 @@ "stylelint": "stylelint \"src/**/*.scss\" --syntax scss", "lint": "run-s -scn tslint stylelint", "build": "webpack --config \"src/webpack.config.js\"", + "build:electron": "webpack --config \"src/webpack.config.electron.js\"", "build:test": "webpack --config \"test-serializer/webpack.config.js\"", "dev": "webpack-dev-server --config \"src/webpack.config.js\" --content-base \"./dist\"", - "electron": "electron electron/index.js" + "electron": "electron dist/electron-main.js" } } diff --git a/electron/index.js b/src/electron-main.ts similarity index 83% rename from electron/index.js rename to src/electron-main.ts index d024d154..0faa81ef 100644 --- a/electron/index.js +++ b/src/electron-main.ts @@ -1,21 +1,22 @@ -const {app, BrowserWindow} = require('electron'); -const path = require("path"); +import { BrowserWindow, app } from 'electron'; +import * as path from 'path'; // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. -let win; +let win: Electron.BrowserWindow; function createWindow() { // Create the browser window. win = new BrowserWindow({ - width: 800, - height: 600, + width: 1024, + height: 768, webPreferences: { - nodeIntegration: false + nodeIntegration: true } }); + win.maximize(); - const indexPath = path.resolve(__dirname, '../dist/index.html'); + const indexPath = path.resolve(__dirname, 'index.html'); // and load the index.html of the app. win.loadURL(`file://${indexPath}`); @@ -46,9 +47,9 @@ app.on('activate', () => { // On macOS 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() + createWindow(); } }); // In this file you can include the rest of your app's specific main process -// code. You can also put them in separate files and require them here \ No newline at end of file +// code. You can also put them in separate files and require them here diff --git a/src/tsconfig.json b/src/tsconfig.json index 25aecfb2..7be8dc9d 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -16,7 +16,8 @@ "node", "jquery", "core-js", - "select2" + "select2", + "electron" ] }, "exclude": [ diff --git a/src/webpack.config.electron.js b/src/webpack.config.electron.js new file mode 100644 index 00000000..b2e05df5 --- /dev/null +++ b/src/webpack.config.electron.js @@ -0,0 +1,32 @@ +//var webpack = require("webpack"); +var webpackFailPlugin = require('webpack-fail-plugin'); +var path = require('path'); + +var rootDir = path.resolve(__dirname, '../'); + +module.exports = { + entry: ['./src/electron-main.ts'], + output: { + path: rootDir + "/dist", + filename: "electron-main.js" + }, + target: 'electron', + devtool: 'source-map', + resolve: { + extensions: ['', '.webpack.js', '.web.js', '.ts', '.js'], + modules: [path.join(rootDir, "node_modules")] + }, + module: { + loaders: [ + { test: /\.ts$/, loader: 'ts-loader', exclude: /node_modules/ }, + ]}, + plugins: [ + // new webpack.optimize.UglifyJsPlugin({ minimize: true }) + webpackFailPlugin + ], + node: { + __dirname: false, + __filename: false + } + +}