拆分配置,修复windows pake打包
This commit is contained in:
8
bin/builders/BuilderFactory.ts
vendored
8
bin/builders/BuilderFactory.ts
vendored
@@ -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!!');
|
||||
}
|
||||
}
|
||||
|
||||
12
bin/builders/MacBuilder.ts
vendored
12
bin/builders/MacBuilder.ts
vendored
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
21
bin/builders/WinBulider.ts
vendored
21
bin/builders/WinBulider.ts
vendored
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
2
bin/builders/common.ts
vendored
2
bin/builders/common.ts
vendored
@@ -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
21
bin/builders/tauriConf.js
vendored
Normal 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
2
bin/cli.ts
vendored
@@ -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.');
|
||||
|
||||
Reference in New Issue
Block a user