Skip to content

Commit

Permalink
拆分配置,修复windows pake打包
Browse files Browse the repository at this point in the history
  • Loading branch information
Tlntin committed Dec 6, 2022
1 parent 809b31a commit fe1f766
Show file tree
Hide file tree
Showing 20 changed files with 214 additions and 497 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ dist/cli.js
*.sw?
.npmrc
output
*.msi
*.deb
*.dmg

package-lock.json
yarn.lock
Expand Down
9 changes: 2 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,14 +144,9 @@ npm i
// 调试
npm run dev

// 打包 Mac 应用
npm run build
// 打包应用
npm run build:release

// 打包 Windows 应用
npm run build:windows

// 打包 Linux 应用
npm run build:linux
```

## 打新包
Expand Down
10 changes: 2 additions & 8 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,14 +143,8 @@ npm i
// Local development
npm run dev

// Pack Mac application
npm run build

// Pack Windows application
npm run build:windows

// Pack Linux application
npm run build:linux
// Pack application
npm run build:release

```

Expand Down
2 changes: 1 addition & 1 deletion app.csv
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ reference,Reference,Reference,https://wangchujiang.com/reference/index.html
code,Code,Code,https://riju.codes/
yuque,YuQue,语雀,https://www.yuque.com/
flomo,Flomo,浮墨,https://flomoapp.com/mine
weread,WeRead,微信阅读,https://weread.qq.com/
qwerty,Qwerty,Qwerty,https://qwerty.kaiyi.cool/
weread,WeRead,微信阅读,https://weread.qq.com/
8 changes: 6 additions & 2 deletions bin/builders/BuilderFactory.ts
Original file line number Diff line number Diff line change
@@ -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 changes: 7 additions & 5 deletions bin/builders/MacBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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);

Expand All @@ -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
);
}
Expand Down
21 changes: 15 additions & 6 deletions bin/builders/WinBulider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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
);
}
Expand Down
2 changes: 1 addition & 1 deletion bin/builders/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down
21 changes: 21 additions & 0 deletions bin/builders/tauriConf.js
Original file line number Diff line number Diff line change
@@ -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 changes: 1 addition & 1 deletion bin/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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.');
Expand Down
6 changes: 2 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@
"start": "npm run dev",
"dev": "npm run tauri dev",
"dev:debug": "npm run tauri dev -- --features devtools",
"build": "npm run tauri build -- --target universal-apple-darwin",
"build:windows": "npm run tauri build -- --target x86_64-pc-windows-msvc",
"build:linux": "npm run tauri build --release",
"build:release": "npm run tauri build --release",
"build:all-unix": "chmod +x ./script/build.sh && ./script/build.sh",
"build:all-windows": ".\\script\\build.bat",
"tauri": "tauri",
Expand Down Expand Up @@ -68,6 +66,6 @@
"cross-env": "^7.0.3",
"rollup": "^3.3.0",
"tslib": "^2.4.1",
"typescript": "^4.8.4"
"typescript": "^4.9.3"
}
}
18 changes: 15 additions & 3 deletions script/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,14 @@ set old_title=WeRead
set old_zh_name=微信阅读
set old_url=https://weread.qq.com/

:: set init name, we will recovery code to init when build finish.
set init_name=%old_name%
set init_title=%old_title%
set init_zh_name=%old_zh_name%
set init_url=%old_url%

:: for windows, we need replace package name to title
.\script\sd.exe "\"productName\": \"weread\"" "\"productName\": \"WeRead\"" src-tauri\tauri.conf.json
:: .\script\sd.exe "\"productName\": \"weread\"" "\"productName\": \"WeRead\"" src-tauri\tauri.conf.json

for /f "skip=1 tokens=1-4 delims=," %%i in (app.csv) do (
setlocal enabledelayedexpansion
Expand All @@ -47,10 +53,10 @@ for /f "skip=1 tokens=1-4 delims=," %%i in (app.csv) do (
.\script\sd.exe !old_url! !url! src-tauri\tauri.conf.json
::replace pacakge name
.\script\sd.exe !old_title! !title! src-tauri\tauri.conf.json
.\script\sd.exe !old_name! !name! src-tauri\tauri.conf.json
.\script\sd.exe !old_name! !name! src-tauri\tauri.windows.conf.json
echo update ico with 32x32 pictue
.\script\sd.exe !old_name! !name! src-tauri\src\main.rs
::copy src-tauri\png\!name!_32.ico src-tauri\icons\icon.ico

echo.
::update package info
set old_zh_name=!name_zh!
Expand Down Expand Up @@ -86,3 +92,9 @@ for /f "skip=1 tokens=1-4 delims=," %%i in (app.csv) do (
:: for windows, we need replace package name to lower again
:: .\script\sd.exe "\"productName\": \"WeRead\"" "\"productName\": \"weread\"" src-tauri\tauri.conf.json
echo "output dir is output\windows"

::recovery code
.\script\sd.exe %url% %init_url% src-tauri\tauri.conf.json
.\script\sd.exe %title% %init_title% src-tauri\tauri.conf.json
.\script\sd.exe %name% %init_name% src-tauri\tauri.windows.conf.json
.\script\sd.exe %name% %init_name% src-tauri\src\main.rs
21 changes: 19 additions & 2 deletions script/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,13 @@ old_zh_name="微信阅读"
old_url="https://weread.qq.com/"
package_prefix="com-tw93"


# set init name, we will recovery code to init when build finish.
export init_name=${old_name}
export init_title=${old_title}
export init_zh_name=${old_zh_name}
export init_url=${old_url}

if [[ "$OSTYPE" =~ ^linux ]]; then
echo "==============="
echo "Build for Linux"
Expand Down Expand Up @@ -73,13 +80,15 @@ do

# for apple, need replace title
if [[ "$OSTYPE" =~ ^darwin ]]; then
$sd "${old_name}" "${package_name}" src-tauri/tauri.macos.conf.json
$sd "${old_title}" "${package_title}" src-tauri/tauri.conf.json
fi

# echo "update ico with 32x32 pictue"
# cp "src-tauri/png/${package_name}_32.ico" "src-tauri/icons/icon.ico"

if [[ "$OSTYPE" =~ ^linux ]]; then
$sd "${old_name}" "${package_name}" src-tauri/tauri.linux.conf.json
echo "update desktop"
old_desktop="src-tauri/assets/${package_prefix}-${old_name}.desktop"
new_desktop="src-tauri/assets/${package_prefix}-${package_name}.desktop"
Expand Down Expand Up @@ -115,12 +124,20 @@ done

echo "build all package success!"
if [[ "$OSTYPE" =~ ^linux ]]; then
$sd "\"productName\": \"com-tw93-weread\"" "\"productName\": \"WeRead\"" src-tauri/tauri.conf.json
# recovery linux code
$sd "\"productName\": \"com-tw93-weread\"" "\"productName\": \"WeRead\"" src-tauri/tauri.conf.json
$sd "${package_name}" "${init_name}" src-tauri/tauri.linux.conf.json
echo "result file in output/linux"
fi

if [[ "$OSTYPE" =~ ^darwin ]]; then
# replace again
# recovery macos code
$sd "\"productName\": \"weread\"" "\"productName\": \"WeRead\"" src-tauri/tauri.conf.json
$sd "${package_name}" "${init_name}" src-tauri/tauri.macos.conf.json
echo "result file in output/macos"
fi

# recovery code
$sd "${url}" "${init_url}" src-tauri/tauri.conf.json
$sd ${package_name}" "${init_name}" src-tauri/tauri.conf.json
$sd ${package_name}" "${init_name}" src-tauri/src/main.rs
Loading

0 comments on commit fe1f766

Please sign in to comment.