张恒

去除开发环境中,electron发出的无用控制台信息,加入禁用f12方法

......@@ -5,6 +5,7 @@ const electron = require('electron')
const path = require('path')
const { say } = require('cfonts')
const { spawn } = require('child_process')
const config = require('../config')
const webpack = require('webpack')
const WebpackDevServer = require('webpack-dev-server')
const webpackHotMiddleware = require('webpack-hot-middleware')
......@@ -36,6 +37,27 @@ function logStats(proc, data) {
log += '\n' + chalk.yellow.bold(`┗ ${new Array(28 + 1).join('-')}`) + '\n'
console.log(log)
}
function removeJunk(chunk) {
if (config.dev.removeElectronJunk) {
// Example: 2018-08-10 22:48:42.866 Electron[90311:4883863] *** WARNING: Textured window <AtomNSWindow: 0x7fb75f68a770>
if (/\d+-\d+-\d+ \d+:\d+:\d+\.\d+ Electron(?: Helper)?\[\d+:\d+] /.test(chunk)) {
return false;
}
// Example: [90789:0810/225804.894349:ERROR:CONSOLE(105)] "Uncaught (in promise) Error: Could not instantiate: ProductRegistryImpl.Registry", source: chrome-devtools://devtools/bundled/inspector.js (105)
if (/\[\d+:\d+\/|\d+\.\d+:ERROR:CONSOLE\(\d+\)\]/.test(chunk)) {
return false;
}
// Example: ALSA lib confmisc.c:767:(parse_card) cannot find card '0'
if (/ALSA lib [a-z]+\.c:\d+:\([a-z_]+\)/.test(chunk)) {
return false;
}
}
return chunk;
}
function startRenderer() {
return new Promise((resolve) => {
......@@ -126,10 +148,10 @@ function startElectron() {
electronProcess = spawn(electron, args)
electronProcess.stdout.on('data', data => {
electronLog(data, 'blue')
electronLog(removeJunk(data), 'blue')
})
electronProcess.stderr.on('data', data => {
electronLog(data, 'red')
electronLog(removeJunk(data), 'red')
})
electronProcess.on('close', () => {
......@@ -138,20 +160,23 @@ function startElectron() {
}
function electronLog(data, color) {
let log = ''
data = data.toString().split(/\r?\n/)
data.forEach(line => {
log += ` ${line}\n`
})
if (/[0-9A-z]+/.test(log)) {
console.log(
chalk[color].bold('┏ Electron -------------------') +
'\n\n' +
log +
chalk[color].bold('┗ ----------------------------') +
'\n'
)
if (data) {
let log = ''
data = data.toString().split(/\r?\n/)
data.forEach(line => {
log += ` ${line}\n`
})
if (/[0-9A-z]+/.test(log)) {
console.log(
chalk[color].bold('┏ Electron -------------------') +
'\n\n' +
log +
chalk[color].bold('┗ ----------------------------') +
'\n'
)
}
}
}
function greeting() {
......
......@@ -4,7 +4,8 @@ module.exports = {
DisableF12: true
},
dev: {
env: require('./dev.env')
env: require('./dev.env'),
removeElectronJunk: true
},
UseStartupChart: true
}
......
......@@ -121,8 +121,10 @@
"node-loader": "^0.6.0",
"node-sass": "^4.12.0",
"sass-loader": "^7.0.3",
"split2": "^3.1.1",
"style-loader": "^1.0.0",
"svg-sprite-loader": "^4.1.6",
"through2-filter": "^3.0.0",
"url-loader": "^2.1.0",
"vue-html-loader": "^1.2.4",
"vue-loader": "^15.7.1",
......
import { globalShortcut, dialog } from 'electron'
import { globalShortcut } from 'electron'
import config from '@config'
if (process.env.NODE_ENV === 'production' && config.bulid.DisableF12) {
globalShortcut.register('f12', () => {
dialog.showErrorBox({})
})
function DisableButton () {
if (process.env.NODE_ENV === 'production' && config.bulid.DisableF12) {
globalShortcut.register('f12', () => {
console.log('用户试图启动控制台')
})
}
}
export default DisableButton
......
......@@ -3,7 +3,7 @@
import { app } from 'electron'
import initWindow from './services/windowManager'
import path from 'path'
import DisableButton from './config/DisableButton'
/**
* Set `__static` path to static files in production
* https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
......@@ -16,6 +16,7 @@ const loadingURL = process.env.NODE_ENV === 'development' ? `http://localhost:90
function onAppReady () {
initWindow(loadingURL)
DisableButton()
}
app.isReady() ? onAppReady() : app.on('ready', onAppReady)
......
......@@ -16,6 +16,7 @@ export default {
message: data.message
}, index => {
if (index === 0) {
// eslint-disable-next-line prefer-const
let tempfun = async () => {
try {
resolve(await fun)
......