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',
|
target: 'nsis',
|
||||||
arch: ['arm64'],
|
arch: ['arm64'],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
target: 'nsis',
|
|
||||||
arch: ['ia32'],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
target: 'portable',
|
target: 'portable',
|
||||||
arch: ['x64'],
|
arch: ['x64'],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
artifactName: '${productName}-${os}-${version}-${arch}-Setup.${ext}',
|
|
||||||
publisherName: 'qier222',
|
publisherName: 'qier222',
|
||||||
icon: 'build/icons/icon.ico',
|
icon: 'build/icons/icon.ico',
|
||||||
},
|
},
|
||||||
nsis: {
|
nsis: {
|
||||||
oneClick: false,
|
oneClick: false,
|
||||||
perMachine: false,
|
perMachine: true,
|
||||||
allowToChangeInstallationDirectory: true,
|
allowToChangeInstallationDirectory: true,
|
||||||
deleteAppDataOnUninstall: true,
|
deleteAppDataOnUninstall: true,
|
||||||
|
artifactName: '${productName}-${version}-${os}-${arch}-Setup.${ext}',
|
||||||
|
},
|
||||||
|
portable: {
|
||||||
|
artifactName: '${productName}-${version}-${os}-${arch}-Portable.${ext}',
|
||||||
},
|
},
|
||||||
mac: {
|
mac: {
|
||||||
target: [
|
target: [
|
||||||
|
|
@ -59,7 +58,7 @@ module.exports = {
|
||||||
arch: ['x64', 'arm64', 'universal'],
|
arch: ['x64', 'arm64', 'universal'],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
artifactName: '${productName}-${os}-${version}-${arch}.${ext}',
|
artifactName: '${productName}-${version}-${os}-${arch}.${ext}',
|
||||||
darkModeSupport: true,
|
darkModeSupport: true,
|
||||||
category: 'public.app-category.music',
|
category: 'public.app-category.music',
|
||||||
},
|
},
|
||||||
|
|
@ -93,7 +92,7 @@ module.exports = {
|
||||||
arch: ['x64'],
|
arch: ['x64'],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
artifactName: '${productName}-${os}-${version}.${ext}',
|
artifactName: '${productName}-${version}-${os}.${ext}',
|
||||||
category: 'Music',
|
category: 'Music',
|
||||||
icon: './build/icon.icns',
|
icon: './build/icon.icns',
|
||||||
},
|
},
|
||||||
|
|
|
||||||
15
.github/workflows/build.yaml
vendored
15
.github/workflows/build.yaml
vendored
|
|
@ -32,10 +32,15 @@ jobs:
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile false
|
run: pnpm install --frozen-lockfile false
|
||||||
|
|
||||||
- name: Electron rebuild
|
- name: Build sqlite3 binaries (macOS, Windows)
|
||||||
run: pnpm electron-rebuild
|
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'
|
if: runner.os == 'Linux'
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update &&
|
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 bsdtar &&
|
||||||
sudo apt-get install --no-install-recommends -y libopenjp2-tools
|
sudo apt-get install --no-install-recommends -y libopenjp2-tools
|
||||||
|
|
||||||
- name: Install Snapcraft (on Ubuntu)
|
- name: Install Snapcraft (Linux)
|
||||||
uses: samuelmeuli/action-snapcraft@v1
|
uses: samuelmeuli/action-snapcraft@v1
|
||||||
if: startsWith(matrix.os, 'ubuntu')
|
if: startsWith(matrix.os, 'ubuntu')
|
||||||
# with:
|
# with:
|
||||||
|
|
@ -79,7 +84,7 @@ jobs:
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: YesPlayMusic-win
|
name: YesPlayMusic-win
|
||||||
path: release/*-Setup.exe
|
path: release/*x64-Setup.exe
|
||||||
if-no-files-found: ignore
|
if-no-files-found: ignore
|
||||||
|
|
||||||
- name: Upload Artifact (Linux)
|
- 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": "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": "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-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",
|
"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\"",
|
"debug": "cross-env-shell NODE_ENV=debug \"npm run typecheck && node scripts/build.mjs && vite ./src/renderer\"",
|
||||||
"eslint": "eslint --ext .ts,.js ./",
|
"eslint": "eslint --ext .ts,.js ./",
|
||||||
|
|
@ -29,7 +32,7 @@
|
||||||
"@sentry/node": "^6.19.3",
|
"@sentry/node": "^6.19.3",
|
||||||
"@sentry/tracing": "^6.19.3",
|
"@sentry/tracing": "^6.19.3",
|
||||||
"NeteaseCloudMusicApi": "^4.5.10",
|
"NeteaseCloudMusicApi": "^4.5.10",
|
||||||
"better-sqlite3": "7.4.6",
|
"better-sqlite3": "7.5.0",
|
||||||
"change-case": "^4.1.2",
|
"change-case": "^4.1.2",
|
||||||
"cookie-parser": "^1.4.6",
|
"cookie-parser": "^1.4.6",
|
||||||
"electron-log": "^4.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
|
NeteaseCloudMusicApi: ^4.5.10
|
||||||
autoprefixer: ^10.4.4
|
autoprefixer: ^10.4.4
|
||||||
axios: ^0.26.1
|
axios: ^0.26.1
|
||||||
better-sqlite3: 7.4.6
|
better-sqlite3: 7.5.0
|
||||||
change-case: ^4.1.2
|
change-case: ^4.1.2
|
||||||
classnames: ^2.3.1
|
classnames: ^2.3.1
|
||||||
color.js: ^1.2.0
|
color.js: ^1.2.0
|
||||||
|
|
@ -80,7 +80,7 @@ dependencies:
|
||||||
'@sentry/node': 6.19.3
|
'@sentry/node': 6.19.3
|
||||||
'@sentry/tracing': 6.19.3
|
'@sentry/tracing': 6.19.3
|
||||||
NeteaseCloudMusicApi: 4.5.10
|
NeteaseCloudMusicApi: 4.5.10
|
||||||
better-sqlite3: 7.4.6
|
better-sqlite3: 7.5.0
|
||||||
change-case: 4.1.2
|
change-case: 4.1.2
|
||||||
cookie-parser: 1.4.6
|
cookie-parser: 1.4.6
|
||||||
electron-log: 4.4.6
|
electron-log: 4.4.6
|
||||||
|
|
@ -1541,13 +1541,12 @@ packages:
|
||||||
/base64-js/1.5.1:
|
/base64-js/1.5.1:
|
||||||
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
||||||
|
|
||||||
/better-sqlite3/7.4.6:
|
/better-sqlite3/7.5.0:
|
||||||
resolution: {integrity: sha512-LB/UxnMhcJY12bRCDXl2jTk0lsbXHCHOLn3cPjGhy3GCcVPGq45sCGJPUdfBZnfXGN14tYTJyq0ztUI3lGng8A==}
|
resolution: {integrity: sha512-6FdG9DoytYGDhLW7VWW1vxjEz7xHkqK6LnaUQYA8d6GHNgZhu9PFX2xwKEEnSBRoT1J4PjTUPeg217ShxNmuPg==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dependencies:
|
dependencies:
|
||||||
bindings: 1.5.0
|
bindings: 1.5.0
|
||||||
prebuild-install: 7.0.1
|
prebuild-install: 7.0.1
|
||||||
tar: 6.1.11
|
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/big-integer/1.6.51:
|
/big-integer/1.6.51:
|
||||||
|
|
@ -1990,6 +1989,7 @@ packages:
|
||||||
/chownr/2.0.0:
|
/chownr/2.0.0:
|
||||||
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
|
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/chromium-pickle-js/0.2.0:
|
/chromium-pickle-js/0.2.0:
|
||||||
resolution: {integrity: sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=}
|
resolution: {integrity: sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=}
|
||||||
|
|
@ -3694,6 +3694,7 @@ packages:
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
dependencies:
|
dependencies:
|
||||||
minipass: 3.1.6
|
minipass: 3.1.6
|
||||||
|
dev: true
|
||||||
|
|
||||||
/fs.realpath/1.0.0:
|
/fs.realpath/1.0.0:
|
||||||
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
||||||
|
|
@ -5140,6 +5141,7 @@ packages:
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dependencies:
|
dependencies:
|
||||||
yallist: 4.0.0
|
yallist: 4.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/minizlib/2.1.2:
|
/minizlib/2.1.2:
|
||||||
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
|
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
|
||||||
|
|
@ -5147,6 +5149,7 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
minipass: 3.1.6
|
minipass: 3.1.6
|
||||||
yallist: 4.0.0
|
yallist: 4.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/mixin-deep/1.3.2:
|
/mixin-deep/1.3.2:
|
||||||
resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
|
resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
|
||||||
|
|
@ -5170,6 +5173,7 @@ packages:
|
||||||
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
|
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
dev: true
|
||||||
|
|
||||||
/ms/2.0.0:
|
/ms/2.0.0:
|
||||||
resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
|
resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
|
||||||
|
|
@ -7076,6 +7080,7 @@ packages:
|
||||||
minizlib: 2.1.2
|
minizlib: 2.1.2
|
||||||
mkdirp: 1.0.4
|
mkdirp: 1.0.4
|
||||||
yallist: 4.0.0
|
yallist: 4.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/temp-file/3.4.0:
|
/temp-file/3.4.0:
|
||||||
resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==}
|
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)
|
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')
|
sqlite.pragma('auto_vacuum = FULL')
|
||||||
|
|
||||||
// Init tables if not exist
|
// Init tables if not exist
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue