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()
|
||
|
}
|
||
|
}
|
||
|
}
|