fix: yarn link mode & electron build

This commit is contained in:
DarkSky 2023-12-19 00:28:50 +08:00
parent baca5ec985
commit c1a115bd1e
15 changed files with 758 additions and 1069 deletions

View File

@ -1,3 +1,9 @@
compressionLevel: mixed
enableGlobalCache: true
nmMode: hardlinks-local
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.0.2.cjs

View File

@ -1,18 +1,19 @@
{
"name": "@dawn-launcher/monorepos",
"productName": "Dawn Launcher",
"version": "1.3.5",
"private": true,
"author": "FanChenIO",
"license": "MIT",
"workspaces": [
"packages/*"
],
"scripts": {
"dev": "yarn workspace @dawn-launcher/electron dev",
"build:addon": "yarn workspace @dawn-launcher/addon build",
"build:sqlite": "npx electron rebuild.js",
"postinstall": "yarn build:addon && yarn build:sqlite"
},
"packageManager": "yarn@4.0.2"
"name": "@dawn-launcher/monorepos",
"productName": "Dawn Launcher",
"version": "1.3.5",
"private": true,
"author": "FanChenIO",
"license": "MIT",
"workspaces": [
"packages/*"
],
"scripts": {
"dev": "yarn workspace @dawn-launcher/electron dev",
"build": "yarn workspace @dawn-launcher/electron build",
"build:addon": "yarn workspace @dawn-launcher/addon build",
"build:sqlite": "yarn workspace @dawn-launcher/electron build:sqlite",
"postinstall": "yarn build:addon && yarn build:sqlite"
},
"packageManager": "yarn@4.0.2"
}

View File

@ -1,305 +1,49 @@
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */
import * as Addon from './addon.node'
/* auto-generated by NAPI-RS */
const {
getFileIcon,
searchPath,
getShortcutFileInfo,
shellExecute,
systemItemExecute,
openFileLocation,
explorerContextMenu,
getEnvByName,
isFullscreen,
switchEnglish,
createMouseHook,
enableMouseHook,
disableMouseHook,
getCursorPosWindowClassName,
getClipboardFileList,
clipboardHasBitmap,
getClipboardBitmapBase64,
emptyRecycleBin,
removeWindowAnimation,
getAppxList,
} = Addon
const { existsSync, readFileSync } = require('fs')
const { join } = require('path')
export default Addon
const { platform, arch } = process
let nativeBinding = null
let localFileExisted = false
let loadError = null
function isMusl() {
// For Node 10
if (!process.report || typeof process.report.getReport !== 'function') {
try {
const lddPath = require('child_process').execSync('which ldd').toString().trim()
return readFileSync(lddPath, 'utf8').includes('musl')
} catch (e) {
return true
}
} else {
const { glibcVersionRuntime } = process.report.getReport().header
return !glibcVersionRuntime
}
export {
getFileIcon,
searchPath,
getShortcutFileInfo,
shellExecute,
systemItemExecute,
openFileLocation,
explorerContextMenu,
getEnvByName,
isFullscreen,
switchEnglish,
createMouseHook,
enableMouseHook,
disableMouseHook,
getCursorPosWindowClassName,
getClipboardFileList,
clipboardHasBitmap,
getClipboardBitmapBase64,
emptyRecycleBin,
removeWindowAnimation,
getAppxList,
}
switch (platform) {
case 'android':
switch (arch) {
case 'arm64':
localFileExisted = existsSync(join(__dirname, 'addon.android-arm64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./addon.android-arm64.node')
} else {
nativeBinding = require('@dawn-launcher/addon-android-arm64')
}
} catch (e) {
loadError = e
}
break
case 'arm':
localFileExisted = existsSync(join(__dirname, 'addon.android-arm-eabi.node'))
try {
if (localFileExisted) {
nativeBinding = require('./addon.android-arm-eabi.node')
} else {
nativeBinding = require('@dawn-launcher/addon-android-arm-eabi')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Android ${arch}`)
}
break
case 'win32':
switch (arch) {
case 'x64':
localFileExisted = existsSync(
join(__dirname, 'addon.win32-x64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.win32-x64-msvc.node')
} else {
nativeBinding = require('@dawn-launcher/addon-win32-x64-msvc')
}
} catch (e) {
loadError = e
}
break
case 'ia32':
localFileExisted = existsSync(
join(__dirname, 'addon.win32-ia32-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.win32-ia32-msvc.node')
} else {
nativeBinding = require('@dawn-launcher/addon-win32-ia32-msvc')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'addon.win32-arm64-msvc.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.win32-arm64-msvc.node')
} else {
nativeBinding = require('@dawn-launcher/addon-win32-arm64-msvc')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on Windows: ${arch}`)
}
break
case 'darwin':
localFileExisted = existsSync(join(__dirname, 'addon.darwin-universal.node'))
try {
if (localFileExisted) {
nativeBinding = require('./addon.darwin-universal.node')
} else {
nativeBinding = require('@dawn-launcher/addon-darwin-universal')
}
break
} catch {}
switch (arch) {
case 'x64':
localFileExisted = existsSync(join(__dirname, 'addon.darwin-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./addon.darwin-x64.node')
} else {
nativeBinding = require('@dawn-launcher/addon-darwin-x64')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(
join(__dirname, 'addon.darwin-arm64.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.darwin-arm64.node')
} else {
nativeBinding = require('@dawn-launcher/addon-darwin-arm64')
}
} catch (e) {
loadError = e
}
break
default:
throw new Error(`Unsupported architecture on macOS: ${arch}`)
}
break
case 'freebsd':
if (arch !== 'x64') {
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
}
localFileExisted = existsSync(join(__dirname, 'addon.freebsd-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./addon.freebsd-x64.node')
} else {
nativeBinding = require('@dawn-launcher/addon-freebsd-x64')
}
} catch (e) {
loadError = e
}
break
case 'linux':
switch (arch) {
case 'x64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'addon.linux-x64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.linux-x64-musl.node')
} else {
nativeBinding = require('@dawn-launcher/addon-linux-x64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'addon.linux-x64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.linux-x64-gnu.node')
} else {
nativeBinding = require('@dawn-launcher/addon-linux-x64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'addon.linux-arm64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.linux-arm64-musl.node')
} else {
nativeBinding = require('@dawn-launcher/addon-linux-arm64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'addon.linux-arm64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.linux-arm64-gnu.node')
} else {
nativeBinding = require('@dawn-launcher/addon-linux-arm64-gnu')
}
} catch (e) {
loadError = e
}
}
break
case 'arm':
localFileExisted = existsSync(
join(__dirname, 'addon.linux-arm-gnueabihf.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.linux-arm-gnueabihf.node')
} else {
nativeBinding = require('@dawn-launcher/addon-linux-arm-gnueabihf')
}
} catch (e) {
loadError = e
}
break
case 'riscv64':
if (isMusl()) {
localFileExisted = existsSync(
join(__dirname, 'addon.linux-riscv64-musl.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.linux-riscv64-musl.node')
} else {
nativeBinding = require('@dawn-launcher/addon-linux-riscv64-musl')
}
} catch (e) {
loadError = e
}
} else {
localFileExisted = existsSync(
join(__dirname, 'addon.linux-riscv64-gnu.node')
)
try {
if (localFileExisted) {
nativeBinding = require('./addon.linux-riscv64-gnu.node')
} else {
nativeBinding = require('@dawn-launcher/addon-linux-riscv64-gnu')
}
} catch (e) {
loadError = e
}
}
break
default:
throw new Error(`Unsupported architecture on Linux: ${arch}`)
}
break
default:
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
}
if (!nativeBinding) {
if (loadError) {
throw loadError
}
throw new Error(`Failed to load native binding`)
}
const { getFileIcon, searchPath, getShortcutFileInfo, shellExecute, systemItemExecute, openFileLocation, explorerContextMenu, getEnvByName, isFullscreen, switchEnglish, createMouseHook, enableMouseHook, disableMouseHook, getCursorPosWindowClassName, getClipboardFileList, clipboardHasBitmap, getClipboardBitmapBase64, emptyRecycleBin, removeWindowAnimation, getAppxList } = nativeBinding
module.exports.getFileIcon = getFileIcon
module.exports.searchPath = searchPath
module.exports.getShortcutFileInfo = getShortcutFileInfo
module.exports.shellExecute = shellExecute
module.exports.systemItemExecute = systemItemExecute
module.exports.openFileLocation = openFileLocation
module.exports.explorerContextMenu = explorerContextMenu
module.exports.getEnvByName = getEnvByName
module.exports.isFullscreen = isFullscreen
module.exports.switchEnglish = switchEnglish
module.exports.createMouseHook = createMouseHook
module.exports.enableMouseHook = enableMouseHook
module.exports.disableMouseHook = disableMouseHook
module.exports.getCursorPosWindowClassName = getCursorPosWindowClassName
module.exports.getClipboardFileList = getClipboardFileList
module.exports.clipboardHasBitmap = clipboardHasBitmap
module.exports.getClipboardBitmapBase64 = getClipboardBitmapBase64
module.exports.emptyRecycleBin = emptyRecycleBin
module.exports.removeWindowAnimation = removeWindowAnimation
module.exports.getAppxList = getAppxList

View File

@ -1,3 +0,0 @@
# `addon-win32-arm64-msvc`
This is the **aarch64-pc-windows-msvc** binary for `addon`

View File

@ -1,18 +0,0 @@
{
"name": "addon-win32-arm64-msvc",
"version": "0.0.0",
"os": [
"win32"
],
"cpu": [
"arm64"
],
"main": "addon.win32-arm64-msvc.node",
"files": [
"addon.win32-arm64-msvc.node"
],
"license": "MIT",
"engines": {
"node": ">= 10"
}
}

View File

@ -1,3 +0,0 @@
# `addon-win32-x64-msvc`
This is the **x86_64-pc-windows-msvc** binary for `addon`

View File

@ -1,18 +0,0 @@
{
"name": "addon-win32-x64-msvc",
"version": "0.0.0",
"os": [
"win32"
],
"cpu": [
"x64"
],
"main": "addon.win32-x64-msvc.node",
"files": [
"addon.win32-x64-msvc.node"
],
"license": "MIT",
"engines": {
"node": ">= 10"
}
}

View File

@ -1,36 +1,37 @@
{
"name": "@dawn-launcher/addon",
"version": "0.0.1",
"main": "index.js",
"types": "index.d.ts",
"napi": {
"name": "addon",
"triples": {
"defaults": false,
"additional": [
"aarch64-pc-windows-msvc",
"x86_64-pc-windows-msvc"
]
}
},
"license": "MIT",
"devDependencies": {
"@napi-rs/cli": "^2.17.0",
"ava": "^5.1.1"
},
"ava": {
"timeout": "3m"
},
"engines": {
"node": ">= 10"
},
"scripts": {
"artifacts": "napi artifacts",
"build": "napi build --platform --release",
"build:debug": "napi build --platform",
"prepublishOnly": "napi prepublish -t npm",
"test": "ava",
"universal": "napi universal",
"version": "napi version"
}
"name": "@dawn-launcher/addon",
"version": "0.0.1",
"private": true,
"main": "index.js",
"types": "index.d.ts",
"napi": {
"name": "addon",
"triples": {
"defaults": false,
"additional": [
"aarch64-pc-windows-msvc",
"x86_64-pc-windows-msvc"
]
}
},
"license": "MIT",
"devDependencies": {
"@napi-rs/cli": "^2.17.0",
"ava": "^5.1.1"
},
"ava": {
"timeout": "3m"
},
"engines": {
"node": ">= 10"
},
"scripts": {
"artifacts": "napi artifacts",
"build": "napi build --release",
"build:debug": "napi build",
"prepublishOnly": "napi prepublish -t npm",
"test": "ava",
"universal": "napi universal",
"version": "napi version"
}
}

View File

@ -13,6 +13,13 @@
asarUnpack: ["**/*.node"],
npmRebuild: false,
files: ["dist", "dist-electron", "native", "!node_modules/**/*"],
"extraFiles": [
{
"from": "../addon/",
"to": "./resources/addon/",
"filter": ["*.node"]
}
],
win: {
appId: "com.dawnlauncher.application",
target: [

View File

@ -1,6 +1,7 @@
import { app, BrowserWindow, dialog } from "electron";
import { release } from "node:os";
import { join, dirname } from "node:path";
import Addon from "@dawn-launcher/addon";
import indexIpcEvent from "./main/ipcEvent";
import classificationIpcEvent from "./classification/ipcEvent";
import { init as classificationDataInit } from "./classification/data";
@ -55,7 +56,7 @@ if (!app.requestSingleInstanceLock()) {
app.whenReady().then(() => {
try {
// addon
global.addon = require("@dawn-launcher/addon");
global.addon = Addon;
// 初始化数据
settingDataInit();
// 获取语言

View File

@ -7,7 +7,8 @@ import {
import { CommonItem, Item } from "../../types/item";
import { parse, join, extname } from "node:path";
import { readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
import { execSync } from "node:child_process";
import Addon from "@dawn-launcher/addon";
import xml2js from "xml2js";
import { newCommonItem, newCommonItemData } from "../../commons/utils/common";
import { ShortcutInfo } from "../../types/common";
@ -21,7 +22,7 @@ export interface AppxInfo {
}
// addon
global.addon = require("@dawn-launcher/addon");
global.addon = Addon;
// 接收消息
process.parentPort.once("message", async (event) => {

View File

@ -19,10 +19,10 @@
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit && vite build && electron-builder",
"build:sqlite": "npx electron rebuild.js",
"preview": "vite preview"
},
"devDependencies": {
"@dawn-launcher/addon": "workspace:*",
"@napi-rs/cli": "^2.16.3",
"@vicons/ionicons5": "^0.12.0",
"@vicons/material": "^0.12.0",
@ -39,12 +39,12 @@
"tailwindcss": "^3.3.5",
"typescript": "^5.2.2",
"vite": "^4.4.11",
"vite-plugin-commonjs": "^0.10.1",
"vite-plugin-electron": "^0.15.4",
"vue": "^3.3.7",
"vue-tsc": "^1.8.22"
},
"dependencies": {
"@dawn-launcher/addon": "workspace:*",
"@types/dompurify": "^3.0.3",
"@types/mime": "^3.0.2",
"@types/request": "^2.48.10",
@ -66,5 +66,8 @@
"urijs": "^1.19.11",
"vue-router": "^4.2.5",
"xml2js": "^0.6.2"
},
"installConfig": {
"hoistingLimits": "workspaces"
}
}

View File

@ -3,7 +3,6 @@ import { resolve, join } from 'node:path'
import { type Plugin, defineConfig, normalizePath } from 'vite'
import vue from '@vitejs/plugin-vue'
import electron from 'vite-plugin-electron'
import commonjs from 'vite-plugin-commonjs'
import { notBundle } from 'vite-plugin-electron/plugin'
import pkg from './package.json'
@ -35,8 +34,8 @@ export default defineConfig(({ command }) => {
ignoreDynamicRequires: true,
},
rollupOptions: {
plugins: [commonjs()],
external: ['@dawn-launcher/addon'],
plugins: [],
external: [/\.node$/],
},
},
plugins: [isServe && notBundle()],
@ -73,7 +72,7 @@ export default defineConfig(({ command }) => {
ignoreDynamicRequires: true,
},
rollupOptions: {
external: [],
external: [/\.node$/],
},
},
plugins: [isServe && notBundle()],

1302
yarn.lock

File diff suppressed because it is too large Load Diff