From 6f4010edf297a0aab48770a92cde1d168a29ec5b Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Sun, 5 Mar 2017 00:27:40 +0900 Subject: [PATCH] Use webpack-dev-server --- package.json | 4 +++- src/browser/index.jsx | 5 +++++ src/browser/settings.jsx | 4 ++++ src/main.js | 21 ++++++--------------- src/package.json | 1 + webpack.config.renderer.js | 11 +++++++++-- 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 0c655180..d22bae4c 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "build:main": "cross-env NODE_ENV=production webpack --bail --config webpack.config.main.js", "build:renderer": "cross-env NODE_ENV=production webpack --bail --config webpack.config.renderer.js", "start": "electron src", - "watch": "gulp watch", + "watch": "run-s watch:*", + "watch:renderer": "webpack-dev-server --config webpack.config.renderer.js", "serve": "gulp watch", "test": "npm-run-all build test:* lint:*", "test:app": "mocha --reporter mocha-circleci-reporter --recursive test/specs", @@ -59,6 +60,7 @@ "npm-run-all": "^4.0.2", "spectron": "~3.6.0", "webpack": "^2.2.1", + "webpack-dev-server": "^2.4.1", "webpack-merge": "^3.0.0" } } diff --git a/src/browser/index.jsx b/src/browser/index.jsx index e6972e59..64c11d4b 100644 --- a/src/browser/index.jsx +++ b/src/browser/index.jsx @@ -103,3 +103,8 @@ ReactDOM.render( />, document.getElementById('content') ); + +// Deny drag&drop navigation in mainWindow. +// Drag&drop is allowed in webview of index.html. +document.addEventListener('dragover', (event) => event.preventDefault()); +document.addEventListener('drop', (event) => event.preventDefault()); diff --git a/src/browser/settings.jsx b/src/browser/settings.jsx index f54cb1a9..2fc71e63 100644 --- a/src/browser/settings.jsx +++ b/src/browser/settings.jsx @@ -20,3 +20,7 @@ ReactDOM.render( , document.getElementById('content') ); + +// Deny drag&drop navigation in mainWindow. +document.addEventListener('dragover', (event) => event.preventDefault()); +document.addEventListener('drop', (event) => event.preventDefault()); diff --git a/src/main.js b/src/main.js index d52aa23f..22189c8f 100644 --- a/src/main.js +++ b/src/main.js @@ -11,6 +11,7 @@ const { systemPreferences, session } = require('electron'); +const isDev = require('electron-is-dev'); const AutoLaunch = require('auto-launch'); @@ -489,7 +490,11 @@ app.on('ready', () => { } // and load the index.html of the app. - mainWindow.loadURL('file://' + __dirname + '/browser/index.html'); + if (isDev) { + mainWindow.loadURL('http://localhost:8080/browser/index.html'); + } else { + mainWindow.loadURL('file://' + __dirname + '/browser/index.html'); + } // Set application menu ipcMain.on('update-menu', (event, configData) => { @@ -571,18 +576,4 @@ app.on('ready', () => { // when you should delete the corresponding element. mainWindow = null; }); - - // Deny drag&drop navigation in mainWindow. - // Drag&drop is allowed in webview of index.html. - mainWindow.webContents.on('will-navigate', (event, url) => { - var dirname = __dirname; - if (process.platform === 'win32') { - dirname = '/' + dirname.replace(/\\/g, '/'); - } - - var index = url.indexOf('file://' + dirname); - if (index !== 0) { - event.preventDefault(); - } - }); }); diff --git a/src/package.json b/src/package.json index 5ef9d414..6263983d 100644 --- a/src/package.json +++ b/src/package.json @@ -18,6 +18,7 @@ "auto-launch": "^5.0.1", "bootstrap": "^3.3.7", "electron-context-menu": "^0.8.0", + "electron-is-dev": "^0.1.2", "electron-squirrel-startup": "^1.0.0", "os-locale": "^2.0.0", "react": "^15.4.2", diff --git a/webpack.config.renderer.js b/webpack.config.renderer.js index 99f1e73c..877fae39 100644 --- a/webpack.config.renderer.js +++ b/webpack.config.renderer.js @@ -1,5 +1,6 @@ 'use strict'; +const path = require('path'); const merge = require('webpack-merge'); const base = require('./webpack.config.base'); @@ -10,7 +11,8 @@ module.exports = merge(base, { 'webview/mattermost': './src/browser/webview/mattermost.js' }, output: { - path: './src/browser', + path: path.join(__dirname, 'src/browser'), + publicPath: 'browser', filename: '[name]_bundle.js' }, module: { @@ -29,5 +31,10 @@ module.exports = merge(base, { __filename: false, __dirname: false }, - target: 'electron-renderer' + target: 'electron-renderer', + devServer: { + contentBase: path.join(__dirname, 'src'), + inline: true, + publicPath: '/browser/' + } });