拆分配置,修复windows pake打包

This commit is contained in:
Tlntin
2022-12-06 15:40:50 +08:00
parent 080ca334b6
commit e5c02f3d26
20 changed files with 214 additions and 497 deletions

View File

@@ -1,13 +1,17 @@
import { IS_MAC } from '@/utils/platform.js';
import { IS_MAC, IS_WIN } from '@/utils/platform.js';
import { IBuilder } from './base.js';
import MacBuilder from './MacBuilder.js';
import WinBuilder from './WinBulider.js';
export default class BuilderFactory {
static create(): IBuilder {
console.log("now platform is ", process.platform);
if (IS_MAC) {
return new MacBuilder();
}
throw new Error('The current system does not support');
if (IS_WIN) {
return new WinBuilder();
}
throw new Error('The current system does not support!!');
}
}

View File

@@ -6,7 +6,8 @@ import { PakeAppOptions } from '@/types.js';
import { IBuilder } from './base.js';
import { shellExec } from '@/utils/shell.js';
// @ts-expect-error 加上resolveJsonModule rollup会打包报错
import tauriConf from '../../src-tauri/tauri.conf.json';
// import tauriConf from '../../src-tauri/tauri.macos.conf.json';
import tauriConf from './tauriConf.js';
import log from 'loglevel';
import { mergeTauriConfig } from './common.js';
import { npmDirectory } from '@/utils/dir.js';
@@ -39,10 +40,11 @@ export default class MacBuilder implements IBuilder {
await mergeTauriConfig(url, options, tauriConf);
const code = await shellExec(`cd ${npmDirectory} && npm run build`);
const dmgName = `${name}_${tauriConf.package.version}_universal.dmg`;
const _ = await shellExec(`cd ${npmDirectory} && npm install && npm run build:release`);
const arch = process.arch;
const dmgName = `${name}_${tauriConf.package.version}_${arch}.dmg`;
const appPath = this.getBuildedAppPath(npmDirectory, dmgName);
const distPath = path.resolve(`${name}_universal.dmg`);
const distPath = path.resolve(`${name}.dmg`);
await fs.copyFile(appPath, distPath);
await fs.unlink(appPath);
@@ -53,7 +55,7 @@ export default class MacBuilder implements IBuilder {
getBuildedAppPath(npmDirectory: string, dmgName: string) {
return path.join(
npmDirectory,
'src-tauri/target/universal-apple-darwin/release/bundle/dmg',
'src-tauri/target/release/bundle/dmg',
dmgName
);
}

View File

@@ -6,7 +6,9 @@ import { PakeAppOptions } from '@/types.js';
import { IBuilder } from './base.js';
import { shellExec } from '@/utils/shell.js';
// @ts-expect-error 加上resolveJsonModule rollup会打包报错
import tauriConf from '../../src-tauri/tauri.conf.json';
// import tauriConf from '../../src-tauri/tauri.windows.conf.json';
import tauriConf from './tauriConf.js';
import { fileURLToPath } from 'url';
import logger from '@/options/logger.js';
import { mergeTauriConfig } from './common.js';
@@ -41,19 +43,26 @@ export default class WinBuilder implements IBuilder {
async build(url: string, options: PakeAppOptions) {
logger.debug('PakeAppOptions', options);
const { name } = options;
await mergeTauriConfig(url, options, tauriConf);
const code = await shellExec(`cd ${npmDirectory} && npm run build:windows`);
// const dmgName = `${name}_${tauriConf.package.version}_universal.dmg`;
// const appPath = this.getBuildedAppPath(npmDirectory, dmgName);
// await fs.copyFile(appPath, path.resolve(`${name}_universal.dmg`));
const _ = await shellExec(`cd ${npmDirectory} && npm install && npm run build:release`);
const language = tauriConf.tauri.bundle.windows.wix.language[0];
const arch = process.arch;
const msiName = `${name}_${tauriConf.package.version}_${arch}_${language}.msi`;
const appPath = this.getBuildedAppPath(npmDirectory, msiName);
const distPath = path.resolve(`${name}.msi`);
await fs.copyFile(appPath, distPath);
await fs.unlink(appPath);
logger.success('Build success!');
logger.success('You can find the app installer in', distPath);
}
getBuildedAppPath(npmDirectory: string, dmgName: string) {
return path.join(
npmDirectory,
'src-tauri/target/universal-apple-darwin/release/bundle/dmg',
'src-tauri/target/release/bundle/msi',
dmgName
);
}

View File

@@ -43,7 +43,7 @@ export async function mergeTauriConfig(
tauriConf.tauri.bundle.icon = [options.icon];
const configJsonPath = path.join(npmDirectory, 'src-tauri/tauri.conf.json');
const configJsonPath = path.join(npmDirectory, 'src-tauri/tauri.conf.json')
await fs.writeFile(
configJsonPath,
Buffer.from(JSON.stringify(tauriConf), 'utf-8')

21
bin/builders/tauriConf.js vendored Normal file
View File

@@ -0,0 +1,21 @@
import CommonConf from '../../src-tauri/tauri.conf.json';
import WinConf from '../../src-tauri/tauri.windows.conf.json';
import MacConf from '../../src-tauri/tauri.macos.conf.json';
let tauriConf = {
package: CommonConf.package,
tauri: CommonConf.tauri
}
switch (process.arch) {
case "win32": {
tauriConf.tauri.bundle = WinConf.bundle;
break;
}
case "darwin": {
tauriConf.tauri.bundle = MacConf.bundle;
}
}
export default tauriConf;

2
bin/cli.ts vendored
View File

@@ -8,7 +8,7 @@ import handleInputOptions from './options/index.js';
import BuilderFactory from './builders/BuilderFactory.js';
import { checkUpdateTips } from './helpers/updater.js';
// @ts-expect-error
import packageJson from '../../package.json';
import packageJson from '../package.json';
import logger from './options/logger.js';
program.version(packageJson.version).description('A cli application can package a web page to desktop application.');