chore: 更新依赖和build.sqlite3.js

This commit is contained in:
qier222 2022-04-11 00:49:50 +08:00
parent a95524ff34
commit 766e866497
No known key found for this signature in database
GPG Key ID: 9C85007ED905F14D
5 changed files with 488 additions and 382 deletions

View File

@ -32,13 +32,8 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile false
- name: Build sqlite3 binaries (macOS, Windows)
if: runner.os == 'macOS'
run: node ./scripts/build.sqlite3.mjs --arm64 --x64
- name: Build sqlite3 binaries (Linux)
if: runner.os == 'Linux'
run: node ./scripts/build.sqlite3.mjs --arm64 --arm --x64
- name: Build sqlite3 binaries
run: node ./scripts/build.sqlite3.js
- name: Install RPM & Pacman (Linux)
if: runner.os == 'Linux'

View File

@ -10,7 +10,7 @@
"repository": "github:qier222/YesPlayMusic",
"main": "dist/main/index.js",
"scripts": {
"install:sqlite3": "node scripts/build.sqlite3.mjs",
"install:sqlite3": "node scripts/build.sqlite3.js",
"dev": "concurrently -n=vite,main -c=#646cff,#74b1be \"npm run dev:renderer\" \"node scripts/build.main.mjs --watch\"",
"dev:renderer": "vite dev",
"build:main": "node scripts/build.main.mjs",
@ -30,10 +30,10 @@
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"dependencies": {
"@sentry/node": "^6.19.3",
"@sentry/tracing": "^6.19.3",
"NeteaseCloudMusicApi": "^4.5.10",
"better-sqlite3": "7.5.0",
"@sentry/node": "^6.19.6",
"@sentry/tracing": "^6.19.6",
"NeteaseCloudMusicApi": "^4.5.11",
"better-sqlite3": "7.5.1",
"change-case": "^4.1.2",
"cookie-parser": "^1.4.6",
"electron-log": "^4.4.6",
@ -42,7 +42,7 @@
"fast-folder-size": "^1.6.1"
},
"devDependencies": {
"@sentry/react": "^6.19.3",
"@sentry/react": "^6.19.6",
"@types/better-sqlite3": "^7.5.0",
"@types/cookie-parser": "^1.4.2",
"@types/express": "^4.17.13",
@ -52,41 +52,42 @@
"@types/lodash-es": "^4.17.6",
"@types/md5": "^2.3.2",
"@types/qrcode": "^1.4.2",
"@types/react": "^17.0.43",
"@types/react-dom": "^17.0.14",
"@typescript-eslint/eslint-plugin": "^5.17.0",
"@typescript-eslint/parser": "^5.17.0",
"@types/react": "^18.0.1",
"@types/react-dom": "^18.0.0",
"@typescript-eslint/eslint-plugin": "^5.18.0",
"@typescript-eslint/parser": "^5.18.0",
"@vitejs/plugin-react": "^1.3.0",
"autoprefixer": "^10.4.4",
"axios": "^0.26.1",
"classnames": "^2.3.1",
"color.js": "^1.2.0",
"colord": "^2.9.2",
"concurrently": "^7.0.0",
"concurrently": "^7.1.0",
"cross-env": "^7.0.3",
"csstype": "^3.0.11",
"dayjs": "^1.11.0",
"dotenv": "^16.0.0",
"electron": "^17.3.1",
"electron-builder": "^22.14.13",
"electron": "^18.0.3",
"electron-builder": "^23.0.3",
"electron-devtools-installer": "^3.2.0",
"electron-rebuild": "^3.2.7",
"esbuild": "^0.14.29",
"eslint": "^8.12.0",
"electron-releases": "^3.984.0",
"esbuild": "^0.14.34",
"eslint": "^8.13.0",
"eslint-plugin-react": "^7.29.4",
"eslint-plugin-react-hooks": "^4.4.0",
"express-fileupload": "^1.3.1",
"framer-motion": "^6.2.8",
"framer-motion": "^6.2.9",
"howler": "^2.2.3",
"js-cookie": "^3.0.1",
"lodash-es": "^4.17.21",
"md5": "^2.3.0",
"minimist": "^1.2.6",
"music-metadata": "^7.12.2",
"music-metadata": "^7.12.3",
"ora": "^6.1.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.12",
"prettier": "2.5.1",
"prettier": "2.6.2",
"prettier-plugin-tailwindcss": "^0.1.8",
"qrcode": "^1.5.0",
"react": "^18.0.0",
@ -97,14 +98,13 @@
"react-use": "^17.3.2",
"rollup": "^2.70.1",
"rollup-plugin-visualizer": "^5.6.0",
"sass": "^1.49.10",
"sass": "^1.50.0",
"tailwindcss": "^3.0.23",
"typescript": "^4.6.3",
"unplugin-auto-import": "^0.6.9",
"valtio": "^1.5.0",
"unplugin-auto-import": "^0.7.0",
"valtio": "^1.5.2",
"valtio-persist": "^1.0.2",
"vite": "^2.9.1",
"vite-plugin-resolve": "^1.8.0",
"vite-plugin-svg-icons": "^2.0.1",
"wait-on": "^6.0.1"
}

625
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

133
scripts/build.sqlite3.js Normal file
View File

@ -0,0 +1,133 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const { rebuild } = require('electron-rebuild')
const fs = require('fs')
const minimist = require('minimist')
const pc = require('picocolors')
const releases = require('electron-releases')
const pkg = require('../package.json')
const axios = require('axios')
const { execSync } = require('child_process')
const electronVersion = pkg.devDependencies.electron.replaceAll('^', '')
const betterSqlite3Version = pkg.dependencies['better-sqlite3'].replaceAll(
'^',
''
)
const electronModuleVersion = releases.find(r =>
r.version.includes(electronVersion)
)?.deps?.modules
const argv = minimist(process.argv.slice(2))
const isWin = process.platform === 'win32'
const isMac = process.platform === 'darwin'
const isLinux = process.platform === 'linux'
if (!fs.existsSync('./dist/main')) {
fs.mkdirSync('./dist/main', {
recursive: true,
})
}
const download = async arch => {
console.log(pc.cyan(`Downloading for ${arch}...`))
if (!electronModuleVersion) {
console.log(pc.red('No electron module version found! Skip download.'))
return false
}
const dir = './tmp/better-sqlite3'
const fileName = `better-sqlite3-v${betterSqlite3Version}-electron-v${electronModuleVersion}-${process.platform}-${arch}`
const zipFileName = `${fileName}.tar.gz`
const url = `https://github.com/JoshuaWise/better-sqlite3/releases/download/v${betterSqlite3Version}/${zipFileName}`
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, {
recursive: true,
})
}
try {
await axios({
method: 'get',
url,
responseType: 'stream',
}).then(response => {
response.data.pipe(fs.createWriteStream(`${dir}/${zipFileName}`))
return true
})
} catch (e) {
console.log(pc.red('Download failed! Skip download.'))
return false
}
try {
execSync(`tar -xvzf ${dir}/${zipFileName} -C ${dir}`)
} catch (e) {
console.log(pc.red('Extract failed! Skip extract.'))
return false
}
try {
fs.copyFileSync(
`${dir}/build/Release/better_sqlite3.node`,
`./dist/main/better_sqlite3_${arch}.node`
)
} catch (e) {
console.log(pc.red('Copy failed! Skip copy.', e))
return false
}
try {
fs.rmdirSync(`${dir}/build`, { recursive: true, force: true })
} catch (e) {
console.log(pc.red('Delete failed! Skip delete.'))
return false
}
return true
}
const build = async arch => {
const downloaded = await download(arch)
if (downloaded) return
console.log(pc.cyan(`Building for ${arch}...`))
await rebuild({
buildPath: process.cwd(),
electronVersion,
arch: arch,
})
.then(() => {
console.info('Build succeeded')
fs.copyFileSync(
'./node_modules/better-sqlite3/build/Release/better_sqlite3.node',
`./dist/main/better_sqlite3_${arch}.node`
)
if (isWin) {
fs.copyFileSync(
'./node_modules/better-sqlite3/build/Release/sqlite3.dll',
'./dist/main/sqlite3.dll'
)
}
})
.catch(e => {
console.error(pc.red('Build failed!'))
console.error(pc.red(e))
})
}
const main = async () => {
if (argv.x64 || argv.arm64 || argv.arm) {
if (argv.x64) await build('x64')
if (argv.arm64) await build('arm64')
if (argv.arm) await build('arm')
} else {
if (isWin || isMac) {
await build('x64')
await build('arm64')
} else if (isLinux) {
await build('x64')
await build('arm64')
await build('arm')
}
}
}
main()

View File

@ -1,59 +0,0 @@
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 isWin = process.platform === 'win32'
const isMac = process.platform === 'darwin'
const isLinux = process.platform === 'linux'
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`
)
if (isWin) {
fs.copyFileSync(
'./node_modules/better-sqlite3/build/Release/sqlite3.dll',
'./dist/main/sqlite3.dll'
)
}
})
.catch(e => {
console.error(pc.red('Rebuild failed!'))
console.error(pc.red(e))
})
}
const main = async () => {
if (argv.x64 || argv.arm64 || argv.arm) {
if (argv.x64) await build('x64')
if (argv.arm64) await build('arm64')
if (argv.arm) await build('arm')
} else {
if (isWin || isMac) {
await build('x64')
await build('arm64')
} else if (isLinux) {
await build('x64')
await build('arm64')
await build('arm')
}
}
}
main()