mirror of
https://github.com/GiriNeko/YesPlayMusic.git
synced 2025-12-16 13:17:46 +00:00
feat: 增加构建 sqlite3 二进制文件的脚本
This commit is contained in:
parent
e748155032
commit
9971418b8c
6 changed files with 73 additions and 20 deletions
|
|
@ -33,24 +33,23 @@ module.exports = {
|
|||
target: 'nsis',
|
||||
arch: ['arm64'],
|
||||
},
|
||||
{
|
||||
target: 'nsis',
|
||||
arch: ['ia32'],
|
||||
},
|
||||
{
|
||||
target: 'portable',
|
||||
arch: ['x64'],
|
||||
},
|
||||
],
|
||||
artifactName: '${productName}-${os}-${version}-${arch}-Setup.${ext}',
|
||||
publisherName: 'qier222',
|
||||
icon: 'build/icons/icon.ico',
|
||||
},
|
||||
nsis: {
|
||||
oneClick: false,
|
||||
perMachine: false,
|
||||
perMachine: true,
|
||||
allowToChangeInstallationDirectory: true,
|
||||
deleteAppDataOnUninstall: true,
|
||||
artifactName: '${productName}-${version}-${os}-${arch}-Setup.${ext}',
|
||||
},
|
||||
portable: {
|
||||
artifactName: '${productName}-${version}-${os}-${arch}-Portable.${ext}',
|
||||
},
|
||||
mac: {
|
||||
target: [
|
||||
|
|
@ -59,7 +58,7 @@ module.exports = {
|
|||
arch: ['x64', 'arm64', 'universal'],
|
||||
},
|
||||
],
|
||||
artifactName: '${productName}-${os}-${version}-${arch}.${ext}',
|
||||
artifactName: '${productName}-${version}-${os}-${arch}.${ext}',
|
||||
darkModeSupport: true,
|
||||
category: 'public.app-category.music',
|
||||
},
|
||||
|
|
@ -93,7 +92,7 @@ module.exports = {
|
|||
arch: ['x64'],
|
||||
},
|
||||
],
|
||||
artifactName: '${productName}-${os}-${version}.${ext}',
|
||||
artifactName: '${productName}-${version}-${os}.${ext}',
|
||||
category: 'Music',
|
||||
icon: './build/icon.icns',
|
||||
},
|
||||
|
|
|
|||
15
.github/workflows/build.yaml
vendored
15
.github/workflows/build.yaml
vendored
|
|
@ -32,10 +32,15 @@ jobs:
|
|||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile false
|
||||
|
||||
- name: Electron rebuild
|
||||
run: pnpm electron-rebuild
|
||||
- name: Build sqlite3 binaries (macOS, Windows)
|
||||
if: runner.os == 'macOS'
|
||||
run: node ./scripts/build.sqlite3.mjs --arm64 --x64
|
||||
|
||||
- name: Install RPM & Pacman (on Ubuntu)
|
||||
- name: Build sqlite3 binaries (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: node ./scripts/build.sqlite3.mjs --arm64 --arm --x64
|
||||
|
||||
- name: Install RPM & Pacman (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt-get update &&
|
||||
|
|
@ -43,7 +48,7 @@ jobs:
|
|||
sudo apt-get install --no-install-recommends -y bsdtar &&
|
||||
sudo apt-get install --no-install-recommends -y libopenjp2-tools
|
||||
|
||||
- name: Install Snapcraft (on Ubuntu)
|
||||
- name: Install Snapcraft (Linux)
|
||||
uses: samuelmeuli/action-snapcraft@v1
|
||||
if: startsWith(matrix.os, 'ubuntu')
|
||||
# with:
|
||||
|
|
@ -79,7 +84,7 @@ jobs:
|
|||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: YesPlayMusic-win
|
||||
path: release/*-Setup.exe
|
||||
path: release/*x64-Setup.exe
|
||||
if-no-files-found: ignore
|
||||
|
||||
- name: Upload Artifact (Linux)
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@
|
|||
"build": "npm run typecheck && cross-env-shell IS_ELECTRON=true npm run build:renderer && npm run build:main",
|
||||
"build:app": "npm run build && electron-builder --config .electron-builder.config.js",
|
||||
"build:app-dir": "npm run build && electron-builder --config .electron-builder.config.js --dir",
|
||||
"build:app-win": "npm run build && electron-builder --config .electron-builder.config.js --win",
|
||||
"build:app-mac": "npm run build && electron-builder --config .electron-builder.config.js --mac",
|
||||
"build:app-linux": "npm run build && electron-builder --config .electron-builder.config.js --linux",
|
||||
"typecheck": "tsc --noEmit --project src/renderer/tsconfig.json",
|
||||
"debug": "cross-env-shell NODE_ENV=debug \"npm run typecheck && node scripts/build.mjs && vite ./src/renderer\"",
|
||||
"eslint": "eslint --ext .ts,.js ./",
|
||||
|
|
@ -29,7 +32,7 @@
|
|||
"@sentry/node": "^6.19.3",
|
||||
"@sentry/tracing": "^6.19.3",
|
||||
"NeteaseCloudMusicApi": "^4.5.10",
|
||||
"better-sqlite3": "7.4.6",
|
||||
"better-sqlite3": "7.5.0",
|
||||
"change-case": "^4.1.2",
|
||||
"cookie-parser": "^1.4.6",
|
||||
"electron-log": "^4.4.6",
|
||||
|
|
|
|||
15
pnpm-lock.yaml
generated
15
pnpm-lock.yaml
generated
|
|
@ -21,7 +21,7 @@ specifiers:
|
|||
NeteaseCloudMusicApi: ^4.5.10
|
||||
autoprefixer: ^10.4.4
|
||||
axios: ^0.26.1
|
||||
better-sqlite3: 7.4.6
|
||||
better-sqlite3: 7.5.0
|
||||
change-case: ^4.1.2
|
||||
classnames: ^2.3.1
|
||||
color.js: ^1.2.0
|
||||
|
|
@ -80,7 +80,7 @@ dependencies:
|
|||
'@sentry/node': 6.19.3
|
||||
'@sentry/tracing': 6.19.3
|
||||
NeteaseCloudMusicApi: 4.5.10
|
||||
better-sqlite3: 7.4.6
|
||||
better-sqlite3: 7.5.0
|
||||
change-case: 4.1.2
|
||||
cookie-parser: 1.4.6
|
||||
electron-log: 4.4.6
|
||||
|
|
@ -1541,13 +1541,12 @@ packages:
|
|||
/base64-js/1.5.1:
|
||||
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
||||
|
||||
/better-sqlite3/7.4.6:
|
||||
resolution: {integrity: sha512-LB/UxnMhcJY12bRCDXl2jTk0lsbXHCHOLn3cPjGhy3GCcVPGq45sCGJPUdfBZnfXGN14tYTJyq0ztUI3lGng8A==}
|
||||
/better-sqlite3/7.5.0:
|
||||
resolution: {integrity: sha512-6FdG9DoytYGDhLW7VWW1vxjEz7xHkqK6LnaUQYA8d6GHNgZhu9PFX2xwKEEnSBRoT1J4PjTUPeg217ShxNmuPg==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
bindings: 1.5.0
|
||||
prebuild-install: 7.0.1
|
||||
tar: 6.1.11
|
||||
dev: false
|
||||
|
||||
/big-integer/1.6.51:
|
||||
|
|
@ -1990,6 +1989,7 @@ packages:
|
|||
/chownr/2.0.0:
|
||||
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/chromium-pickle-js/0.2.0:
|
||||
resolution: {integrity: sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=}
|
||||
|
|
@ -3694,6 +3694,7 @@ packages:
|
|||
engines: {node: '>= 8'}
|
||||
dependencies:
|
||||
minipass: 3.1.6
|
||||
dev: true
|
||||
|
||||
/fs.realpath/1.0.0:
|
||||
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
||||
|
|
@ -5140,6 +5141,7 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/minizlib/2.1.2:
|
||||
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
|
||||
|
|
@ -5147,6 +5149,7 @@ packages:
|
|||
dependencies:
|
||||
minipass: 3.1.6
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/mixin-deep/1.3.2:
|
||||
resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
|
||||
|
|
@ -5170,6 +5173,7 @@ packages:
|
|||
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/ms/2.0.0:
|
||||
resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
|
||||
|
|
@ -7076,6 +7080,7 @@ packages:
|
|||
minizlib: 2.1.2
|
||||
mkdirp: 1.0.4
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/temp-file/3.4.0:
|
||||
resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==}
|
||||
|
|
|
|||
39
scripts/build.sqlite3.mjs
Normal file
39
scripts/build.sqlite3.mjs
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
import { rebuild } from 'electron-rebuild'
|
||||
import fs from 'fs'
|
||||
import minimist from 'minimist'
|
||||
import pc from 'picocolors'
|
||||
|
||||
const pkg = JSON.parse(await fs.readFileSync('./package.json', 'utf8'))
|
||||
const electronVersion = pkg.devDependencies.electron.replaceAll('^', '')
|
||||
const argv = minimist(process.argv.slice(2))
|
||||
|
||||
const build = async arch => {
|
||||
console.log(pc.blue(`Building for ${arch}...`))
|
||||
await rebuild({
|
||||
buildPath: process.cwd(),
|
||||
electronVersion,
|
||||
arch: arch,
|
||||
})
|
||||
.then(() => {
|
||||
console.info('Rebuild succeeded')
|
||||
if (!fs.existsSync('./dist/main')) {
|
||||
fs.mkdirSync('./dist/main', { recursive: true })
|
||||
}
|
||||
fs.copyFileSync(
|
||||
'./node_modules/better-sqlite3/build/Release/better_sqlite3.node',
|
||||
`./dist/main/better_sqlite3_${arch}.node`
|
||||
)
|
||||
})
|
||||
.catch(e => {
|
||||
console.error(pc.red('Rebuild failed!'))
|
||||
console.error(pc.red(e))
|
||||
})
|
||||
}
|
||||
|
||||
const main = async () => {
|
||||
if (argv.x64) await build('x64')
|
||||
if (argv.arm64) await build('arm64')
|
||||
if (argv.arm) await build('arm')
|
||||
}
|
||||
|
||||
main()
|
||||
|
|
@ -27,7 +27,9 @@ const dbFilePath = path.resolve(
|
|||
)
|
||||
createFileIfNotExist(dbFilePath)
|
||||
|
||||
const sqlite = new SQLite3(dbFilePath)
|
||||
const sqlite = new SQLite3(dbFilePath, {
|
||||
nativeBinding: path.join(__dirname, `./better_sqlite3_${process.arch}.node`),
|
||||
})
|
||||
sqlite.pragma('auto_vacuum = FULL')
|
||||
|
||||
// Init tables if not exist
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue