feat: update electron config

This commit is contained in:
kunkka 2020-10-27 03:56:05 +08:00
parent 71ee186d83
commit bd29570e31
3 changed files with 45 additions and 14 deletions

View File

@ -2,6 +2,8 @@
"name": "YesPlayMusic", "name": "YesPlayMusic",
"version": "0.2.0", "version": "0.2.0",
"private": true, "private": true,
"description": "A third party music application for Netease Cloud Music",
"author": "qier222",
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "serve": "vue-cli-service serve",
"build": "vue-cli-service build", "build": "vue-cli-service build",

View File

@ -1,9 +1,12 @@
"use strict"; "use strict";
const { exec } = require("child_process");
// const fs = require('fs')
import { app, protocol, BrowserWindow } from "electron"; import { app, protocol, BrowserWindow } from "electron";
import { createProtocol } from "vue-cli-plugin-electron-builder/lib"; import { createProtocol } from "vue-cli-plugin-electron-builder/lib";
import installExtension, { VUEJS_DEVTOOLS } from "electron-devtools-installer"; import installExtension, { VUEJS_DEVTOOLS } from "electron-devtools-installer";
const isDevelopment = process.env.NODE_ENV !== "production"; const isDevelopment = process.env.NODE_ENV !== "production";
// maybe use for modify app menu
// const contextMenu = require('electron-context-menu');
// Keep a global reference of the window object, if you don't, the window will // 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. // be closed automatically when the JavaScript object is garbage collected.
@ -15,14 +18,35 @@ protocol.registerSchemesAsPrivileged([
]); ]);
function createWindow() { function createWindow() {
console.log("Node Version: ", process.version);
const napi = exec("npm run napi:run");
let scriptOutput = "";
napi.stdout.setEncoding('utf8');
napi.stdout.on('data', (data) => {
console.log('napi: ' + data);
data = data.toString();
scriptOutput += data + '\n';
// TODO write file with stream
// const log = fs.createWriteStream(__dirname, '/tmp/' + +new Date + '.log')
// log.write(scriptOutput)
});
// napi.stdout.on('error', (err) => {
// console.log('napi error: ' + err);
// data = err.toString();
// scriptOutput += data + '\n';
// const log = fs.createWriteStream(__dirname, '/tmp/' + +new Date + 'error.log')
// log.write(scriptOutput)
// });
// Create the browser window. // Create the browser window.
win = new BrowserWindow({ win = new BrowserWindow({
width: 1920, width: 1920,
height: 768, height: 768,
webPreferences: { webPreferences: {
webSecurity: false,
// Use pluginOptions.nodeIntegration, leave this alone // Use pluginOptions.nodeIntegration, leave this alone
// See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION, nodeIntegration: true,
}, },
}); });
@ -34,6 +58,7 @@ function createWindow() {
createProtocol("app"); createProtocol("app");
// Load the index.html when not in development // Load the index.html when not in development
win.loadURL("app://./index.html"); win.loadURL("app://./index.html");
win.webContents.openDevTools();
} }
win.on("closed", () => { win.on("closed", () => {

View File

@ -1,4 +1,5 @@
const path = require("path"); const path = require("path");
const CopywebpackPlugin = require('copy-webpack-plugin')
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir); return path.join(__dirname, dir);
} }
@ -75,19 +76,22 @@ module.exports = {
nsis: { nsis: {
oneClick: false, oneClick: false,
allowToChangeInstallationDirectory: true allowToChangeInstallationDirectory: true
} },
// 集成 nodejs, https://nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration
// nodeIntegration: true
}, },
// chainWebpackMainProcess: config => { chainWebpackMainProcess: config => {
// config.module // console.log(config)
// .rule('babel') let outputDir = 'dist_electron/bundled'
// .test(/\*.js$/) config.plugin('copy').use(CopywebpackPlugin, [
// .use('babel') [
// .loader('babel-loader') {
// .options({ from: path.resolve(__dirname, './NeteaseCloudMusicApi-master'),
// presets: [['@babel/preset-env', '@vue/cli-plugin-babel/preset', { modules: false }]], to: path.join(__dirname, outputDir, 'NeteaseCloudMusicApi-master')
// plugins: ['@babel/plugin-proposal-class-properties'] }
// }) ]
// }, ])
}
// 渲染线程的配置文件 // 渲染线程的配置文件
// chainWebpackRendererProcess: config => { // chainWebpackRendererProcess: config => {
// // 渲染线程的一些其他配置 // // 渲染线程的一些其他配置