74 lines
2.0 KiB
TypeScript
74 lines
2.0 KiB
TypeScript
import path from 'path'
|
|
import fs from 'fs'
|
|
|
|
class BuildObj {
|
|
buildMain() {
|
|
import('esbuild').then(build => {
|
|
build.buildSync({
|
|
entryPoints: ['./src/main/mainEntry.ts'],
|
|
bundle: true,
|
|
platform: "node",
|
|
minify: true,
|
|
outfile: './dist/mainEntry.js',
|
|
external: ['electron']
|
|
})
|
|
})
|
|
}
|
|
|
|
preparePackageJson() {
|
|
const pkgJsonPath = path.join(process.cwd(), 'package.json')
|
|
const localPkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'))
|
|
const electronConfig = localPkgJson.devDependencies.electron.replace("^", "")
|
|
localPkgJson.main = "mainEntry.js"
|
|
delete localPkgJson.scripts
|
|
delete localPkgJson.devDependencies
|
|
localPkgJson.devDependencies = { electron: electronConfig }
|
|
const tarJsonPath = path.join(process.cwd(), "dist", "package.json")
|
|
fs.writeFileSync(tarJsonPath, JSON.stringify(localPkgJson))
|
|
fs.mkdirSync(path.join(process.cwd(), "dist/node_modules"))
|
|
}
|
|
|
|
buildInstaller() {
|
|
const options = {
|
|
config: {
|
|
directories: {
|
|
output: path.join(process.cwd(), "release"),
|
|
app: path.join(process.cwd(), 'dist')
|
|
},
|
|
files: ["**"],
|
|
extends: null,
|
|
productName: "JueJin",
|
|
appId: "com.juejin.desktop",
|
|
asar: true,
|
|
nsis: {
|
|
oneClick: true,
|
|
perMachine: true,
|
|
allowToChangeInstallationDirectory: false,
|
|
createDesktopShortcut: true,
|
|
createStartMenuShortcut: true,
|
|
shortcutName: "jujinDesktop"
|
|
},
|
|
// publish: [
|
|
// {provider: "generic", url: "http://localhost:5500"}
|
|
// ]
|
|
},
|
|
project: process.cwd()
|
|
}
|
|
return import('electron-builder').then(builder => {
|
|
builder.build(options)
|
|
})
|
|
}
|
|
}
|
|
|
|
export const buildPlugin = () => {
|
|
return {
|
|
name: "build-plugin",
|
|
closeBundle: () => {
|
|
console.log('')
|
|
const buildObj = new BuildObj()
|
|
buildObj.buildMain()
|
|
buildObj.preparePackageJson()
|
|
buildObj.buildInstaller()
|
|
}
|
|
}
|
|
} |