✨ mac命令行默认打通用包
This commit is contained in:
18
.github/workflows/pake_build.yaml
vendored
18
.github/workflows/pake_build.yaml
vendored
@@ -66,24 +66,6 @@ jobs:
|
||||
run: |
|
||||
npm run build:all-windows
|
||||
|
||||
# - name: Create Release and Upload Release Asset
|
||||
# uses: softprops/action-gh-release@v1
|
||||
# if: startsWith(github.ref, 'refs/tags/')
|
||||
# with:
|
||||
# tag_name: ${{ github.ref }}
|
||||
# name: Release ${{ github.ref }}
|
||||
# body: TODO New Release.
|
||||
# draft: false
|
||||
# prerelease: false
|
||||
# files: |
|
||||
# output/*/*.*
|
||||
|
||||
# - uses: ncipollo/release-action@v1
|
||||
# if: startsWith(github.ref, 'refs/tags/v')
|
||||
# with:
|
||||
# allowUpdates: true
|
||||
# artifacts: "output/*/*.*"
|
||||
# token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload files
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
16
bin/builders/LinuxBuilder.ts
vendored
16
bin/builders/LinuxBuilder.ts
vendored
@@ -46,31 +46,31 @@ export default class LinuxBuilder implements IBuilder {
|
||||
const { name } = options;
|
||||
|
||||
await mergeTauriConfig(url, options, tauriConf);
|
||||
const _ = await shellExec(`cd ${npmDirectory} && npm install && npm run build`);
|
||||
let arch = "";
|
||||
await shellExec(`cd ${npmDirectory} && npm install && npm run build`);
|
||||
|
||||
let arch: string;
|
||||
if (process.arch === "x64") {
|
||||
arch = "amd64";
|
||||
} else {
|
||||
arch = process.arch;
|
||||
}
|
||||
const debName = `${name}_${tauriConf.package.version}_${arch}.deb`;
|
||||
const appPath = this.getBuildedAppPath(npmDirectory, "deb", debName);
|
||||
const appPath = this.getBuildAppPath(npmDirectory, "deb", debName);
|
||||
const distPath = path.resolve(`${name}.deb`);
|
||||
await fs.copyFile(appPath, distPath);
|
||||
await fs.unlink(appPath);
|
||||
|
||||
|
||||
const appImageName = `${name}_${tauriConf.package.version}_${arch}.AppImage`;
|
||||
const appImagePath = this.getBuildedAppPath(npmDirectory, "appimage", appImageName);
|
||||
const appImagePath = this.getBuildAppPath(npmDirectory, "appimage", appImageName);
|
||||
const distAppPath = path.resolve(`${name}.AppImage`);
|
||||
await fs.copyFile(appImagePath, distAppPath);
|
||||
await fs.unlink(appImagePath);
|
||||
logger.success('Build success!');
|
||||
logger.success('You can find the deb app installer in', distPath);
|
||||
logger.success('You can find the Appimage app installer in', distAppPath);
|
||||
logger.success('You can find the AppImage app installer in', distAppPath);
|
||||
}
|
||||
|
||||
getBuildedAppPath(npmDirectory: string,packageType: string, packageName: string) {
|
||||
getBuildAppPath(npmDirectory: string, packageType: string, packageName: string) {
|
||||
return path.join(
|
||||
npmDirectory,
|
||||
'src-tauri/target/release/bundle/',
|
||||
@@ -78,4 +78,4 @@ export default class LinuxBuilder implements IBuilder {
|
||||
packageName
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
20
bin/builders/MacBuilder.ts
vendored
20
bin/builders/MacBuilder.ts
vendored
@@ -29,7 +29,7 @@ export default class MacBuilder implements IBuilder {
|
||||
// TODO 国内有可能会超时
|
||||
await installRust();
|
||||
} else {
|
||||
log.error('Error: Pake need Rust to package your webapp!!!');
|
||||
log.error('Error: Pake need Rust to package your webapp!');
|
||||
process.exit(2);
|
||||
}
|
||||
}
|
||||
@@ -40,15 +40,11 @@ export default class MacBuilder implements IBuilder {
|
||||
|
||||
await mergeTauriConfig(url, options, tauriConf);
|
||||
|
||||
const _ = await shellExec(`cd ${npmDirectory} && npm install && npm run build`);
|
||||
let arch = "x64";
|
||||
if (process.arch === "arm64") {
|
||||
arch = "aarch64";
|
||||
} else {
|
||||
arch = process.arch;
|
||||
}
|
||||
const dmgName = `${name}_${tauriConf.package.version}_${arch}.dmg`;
|
||||
const appPath = this.getBuildedAppPath(npmDirectory, dmgName);
|
||||
//这里直接使用 universal-apple-darwin 的打包,而非当前系统的包
|
||||
await shellExec(`cd ${npmDirectory} && npm install && npm run build:mac`);
|
||||
|
||||
const dmgName = `${name}_${tauriConf.package.version}_universal.dmg`;
|
||||
const appPath = this.getBuildAppPath(npmDirectory, dmgName);
|
||||
const distPath = path.resolve(`${name}.dmg`);
|
||||
await fs.copyFile(appPath, distPath);
|
||||
await fs.unlink(appPath);
|
||||
@@ -57,10 +53,10 @@ export default class MacBuilder implements IBuilder {
|
||||
logger.success('You can find the app installer in', distPath);
|
||||
}
|
||||
|
||||
getBuildedAppPath(npmDirectory: string, dmgName: string) {
|
||||
getBuildAppPath(npmDirectory: string, dmgName: string) {
|
||||
return path.join(
|
||||
npmDirectory,
|
||||
'src-tauri/target/release/bundle/dmg',
|
||||
'src-tauri/target/universal-apple-darwin/release/bundle/dmg',
|
||||
dmgName
|
||||
);
|
||||
}
|
||||
|
||||
10
bin/builders/WinBulider.ts
vendored
10
bin/builders/WinBulider.ts
vendored
@@ -5,11 +5,9 @@ import { checkRustInstalled, installRust } from '@/helpers/rust.js';
|
||||
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.windows.conf.json';
|
||||
// @ts-expect-error
|
||||
import tauriConf from './tauriConf.js';
|
||||
|
||||
import { fileURLToPath } from 'url';
|
||||
import logger from '@/options/logger.js';
|
||||
import { mergeTauriConfig } from './common.js';
|
||||
import { npmDirectory } from '@/utils/dir.js';
|
||||
@@ -47,11 +45,11 @@ export default class WinBuilder implements IBuilder {
|
||||
|
||||
await mergeTauriConfig(url, options, tauriConf);
|
||||
|
||||
const _ = await shellExec(`cd ${npmDirectory} && npm install && npm run build`);
|
||||
await shellExec(`cd ${npmDirectory} && npm install && npm run build`);
|
||||
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 appPath = this.getBuildAppPath(npmDirectory, msiName);
|
||||
const distPath = path.resolve(`${name}.msi`);
|
||||
await fs.copyFile(appPath, distPath);
|
||||
await fs.unlink(appPath);
|
||||
@@ -59,7 +57,7 @@ export default class WinBuilder implements IBuilder {
|
||||
logger.success('You can find the app installer in', distPath);
|
||||
}
|
||||
|
||||
getBuildedAppPath(npmDirectory: string, dmgName: string) {
|
||||
getBuildAppPath(npmDirectory: string, dmgName: string) {
|
||||
return path.join(
|
||||
npmDirectory,
|
||||
'src-tauri/target/release/bundle/msi',
|
||||
|
||||
4
bin/builders/common.ts
vendored
4
bin/builders/common.ts
vendored
@@ -51,7 +51,7 @@ export async function mergeTauriConfig(
|
||||
const reg = new RegExp(/([0-9]*[a-zA-Z]+[0-9]*)+/);
|
||||
if (!reg.test(name) || reg.exec(name)[0].length != name.length) {
|
||||
logger.error("package name is illegal, it must be letters, numbers, and it must contain the letters")
|
||||
logger.error("E.g 123pan,123Pan Pan123,weread, WeRead, WERead");
|
||||
logger.error("E.g 123pan,123Pan,Pan123,weread,WeRead,WERead");
|
||||
process.exit();
|
||||
}
|
||||
}
|
||||
@@ -113,7 +113,7 @@ export async function mergeTauriConfig(
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let bundleConf = {tauri: {bundle: tauriConf.tauri.bundle}};
|
||||
await fs.writeFile(
|
||||
configPath,
|
||||
|
||||
7
bin/cli.ts
vendored
7
bin/cli.ts
vendored
@@ -1,6 +1,5 @@
|
||||
import { program } from 'commander';
|
||||
import log from 'loglevel';
|
||||
import chalk from 'chalk';
|
||||
import { DEFAULT_PAKE_OPTIONS } from './defaults.js';
|
||||
import { PakeCliOptions } from './types.js';
|
||||
import { validateNumberInput, validateUrlInput } from './utils/validate.js';
|
||||
@@ -9,7 +8,6 @@ import BuilderFactory from './builders/BuilderFactory.js';
|
||||
import { checkUpdateTips } from './helpers/updater.js';
|
||||
// @ts-expect-error
|
||||
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.');
|
||||
|
||||
@@ -25,7 +23,8 @@ program
|
||||
.option('--transparent', 'transparent title bar', DEFAULT_PAKE_OPTIONS.transparent)
|
||||
.option('--debug', 'debug', DEFAULT_PAKE_OPTIONS.transparent)
|
||||
.action(async (url: string, options: PakeCliOptions) => {
|
||||
checkUpdateTips();
|
||||
|
||||
await checkUpdateTips();
|
||||
|
||||
if (!url) {
|
||||
// 直接 pake 不需要出现url提示
|
||||
@@ -42,7 +41,7 @@ program
|
||||
|
||||
const appOptions = await handleInputOptions(options, url);
|
||||
|
||||
builder.build(url, appOptions);
|
||||
await builder.build(url, appOptions);
|
||||
});
|
||||
|
||||
program.parse();
|
||||
|
||||
37
bin/options/icon.ts
vendored
37
bin/options/icon.ts
vendored
@@ -33,43 +33,6 @@ export async function getDefaultIcon() {
|
||||
return path.join(npmDirectory, iconPath);
|
||||
}
|
||||
|
||||
// export async function getIconFromPageUrl(url: string) {
|
||||
// const icon = await pageIcon(url);
|
||||
// console.log(icon);
|
||||
// if (icon.ext === '.ico') {
|
||||
// const a = await ICO.parse(icon.data);
|
||||
// icon.data = Buffer.from(a[0].buffer);
|
||||
// }
|
||||
|
||||
// const iconDir = (await dir()).path;
|
||||
// const iconPath = path.join(iconDir, `/icon.icns`);
|
||||
|
||||
// const out = png2icons.createICNS(icon.data, png2icons.BILINEAR, 0);
|
||||
|
||||
// await fs.writeFile(iconPath, out);
|
||||
// return iconPath;
|
||||
// }
|
||||
|
||||
// export async function getIconFromMacosIcons(name: string) {
|
||||
// const data = {
|
||||
// query: name,
|
||||
// filters: 'approved:true',
|
||||
// hitsPerPage: 10,
|
||||
// page: 1,
|
||||
// };
|
||||
// const res = await axios.post('https://p1txh7zfb3-2.algolianet.com/1/indexes/macOSicons/query?x-algolia-agent=Algolia%20for%20JavaScript%20(4.13.1)%3B%20Browser', data, {
|
||||
// headers: {
|
||||
// 'x-algolia-api-key': '0ba04276e457028f3e11e38696eab32c',
|
||||
// 'x-algolia-application-id': 'P1TXH7ZFB3',
|
||||
// },
|
||||
// });
|
||||
// if (!res.data.hits.length) {
|
||||
// return '';
|
||||
// } else {
|
||||
// return downloadIcon(res.data.hits[0].icnsUrl);
|
||||
// }
|
||||
// }
|
||||
|
||||
export async function downloadIcon(iconUrl: string) {
|
||||
let iconResponse;
|
||||
try {
|
||||
|
||||
119
dist/cli.js
vendored
119
dist/cli.js
vendored
@@ -1646,7 +1646,7 @@ function mergeTauriConfig(url, options, tauriConf) {
|
||||
const reg = new RegExp(/([0-9]*[a-zA-Z]+[0-9]*)+/);
|
||||
if (!reg.test(name) || reg.exec(name)[0].length != name.length) {
|
||||
logger.error("package name is illegal, it must be letters, numbers, and it must contain the letters");
|
||||
logger.error("E.g 123pan,123Pan Pan123,weread, WeRead, WERead");
|
||||
logger.error("E.g 123pan,123Pan,Pan123,weread,WeRead,WERead");
|
||||
process.exit();
|
||||
}
|
||||
}
|
||||
@@ -1752,38 +1752,6 @@ function getDefaultIcon() {
|
||||
return path.join(npmDirectory, iconPath);
|
||||
});
|
||||
}
|
||||
// export async function getIconFromPageUrl(url: string) {
|
||||
// const icon = await pageIcon(url);
|
||||
// console.log(icon);
|
||||
// if (icon.ext === '.ico') {
|
||||
// const a = await ICO.parse(icon.data);
|
||||
// icon.data = Buffer.from(a[0].buffer);
|
||||
// }
|
||||
// const iconDir = (await dir()).path;
|
||||
// const iconPath = path.join(iconDir, `/icon.icns`);
|
||||
// const out = png2icons.createICNS(icon.data, png2icons.BILINEAR, 0);
|
||||
// await fs.writeFile(iconPath, out);
|
||||
// return iconPath;
|
||||
// }
|
||||
// export async function getIconFromMacosIcons(name: string) {
|
||||
// const data = {
|
||||
// query: name,
|
||||
// filters: 'approved:true',
|
||||
// hitsPerPage: 10,
|
||||
// page: 1,
|
||||
// };
|
||||
// const res = await axios.post('https://p1txh7zfb3-2.algolianet.com/1/indexes/macOSicons/query?x-algolia-agent=Algolia%20for%20JavaScript%20(4.13.1)%3B%20Browser', data, {
|
||||
// headers: {
|
||||
// 'x-algolia-api-key': '0ba04276e457028f3e11e38696eab32c',
|
||||
// 'x-algolia-application-id': 'P1TXH7ZFB3',
|
||||
// },
|
||||
// });
|
||||
// if (!res.data.hits.length) {
|
||||
// return '';
|
||||
// } else {
|
||||
// return downloadIcon(res.data.hits[0].icnsUrl);
|
||||
// }
|
||||
// }
|
||||
function downloadIcon(iconUrl) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let iconResponse;
|
||||
@@ -1861,8 +1829,8 @@ function checkRustInstalled() {
|
||||
var tauri$3 = {
|
||||
windows: [
|
||||
{
|
||||
url: "https://weread.qq.com/",
|
||||
transparent: true,
|
||||
url: "https://baidu.com",
|
||||
transparent: false,
|
||||
fullscreen: false,
|
||||
width: 1200,
|
||||
height: 780,
|
||||
@@ -1874,21 +1842,40 @@ var tauri$3 = {
|
||||
},
|
||||
updater: {
|
||||
active: false
|
||||
},
|
||||
bundle: {
|
||||
icon: [
|
||||
"/Users/tw93/www/pake/src-tauri/icons/icon.icns"
|
||||
],
|
||||
identifier: "pake-bb6e08",
|
||||
active: true,
|
||||
category: "DeveloperTool",
|
||||
copyright: "",
|
||||
externalBin: [
|
||||
],
|
||||
longDescription: "",
|
||||
macOS: {
|
||||
entitlements: null,
|
||||
exceptionDomain: "",
|
||||
frameworks: [
|
||||
],
|
||||
providerShortName: null,
|
||||
signingIdentity: null
|
||||
},
|
||||
resources: [
|
||||
],
|
||||
shortDescription: "",
|
||||
targets: [
|
||||
"dmg"
|
||||
]
|
||||
}
|
||||
};
|
||||
var build = {
|
||||
devPath: "../dist",
|
||||
distDir: "../dist",
|
||||
beforeBuildCommand: "",
|
||||
beforeDevCommand: ""
|
||||
};
|
||||
var CommonConf = {
|
||||
"package": {
|
||||
productName: "WeRead",
|
||||
productName: "baidu",
|
||||
version: "1.0.0"
|
||||
},
|
||||
tauri: tauri$3,
|
||||
build: build
|
||||
tauri: tauri$3
|
||||
};
|
||||
|
||||
var tauri$2 = {
|
||||
@@ -1931,9 +1918,9 @@ var WinConf = {
|
||||
var tauri$1 = {
|
||||
bundle: {
|
||||
icon: [
|
||||
"icons/weread.icns"
|
||||
"/Users/tw93/www/pake/src-tauri/icons/icon.icns"
|
||||
],
|
||||
identifier: "com.tw93.weread",
|
||||
identifier: "pake-bb6e08",
|
||||
active: true,
|
||||
category: "DeveloperTool",
|
||||
copyright: "",
|
||||
@@ -2038,7 +2025,7 @@ class MacBuilder {
|
||||
yield installRust();
|
||||
}
|
||||
else {
|
||||
log.error('Error: Pake need Rust to package your webapp!!!');
|
||||
log.error('Error: Pake need Rust to package your webapp!');
|
||||
process.exit(2);
|
||||
}
|
||||
});
|
||||
@@ -2048,16 +2035,10 @@ class MacBuilder {
|
||||
log.debug('PakeAppOptions', options);
|
||||
const { name } = options;
|
||||
yield mergeTauriConfig(url, options, tauriConf);
|
||||
yield shellExec(`cd ${npmDirectory} && npm install && npm run build`);
|
||||
let arch = "x64";
|
||||
if (process.arch === "arm64") {
|
||||
arch = "aarch64";
|
||||
}
|
||||
else {
|
||||
arch = process.arch;
|
||||
}
|
||||
const dmgName = `${name}_${tauriConf.package.version}_${arch}.dmg`;
|
||||
const appPath = this.getBuildedAppPath(npmDirectory, dmgName);
|
||||
//这里直接使用 universal-apple-darwin 的打包,而非当前系统的包
|
||||
yield shellExec(`cd ${npmDirectory} && npm install && npm run build:mac`);
|
||||
const dmgName = `${name}_${tauriConf.package.version}_universal.dmg`;
|
||||
const appPath = this.getBuildAppPath(npmDirectory, dmgName);
|
||||
const distPath = path.resolve(`${name}.dmg`);
|
||||
yield fs.copyFile(appPath, distPath);
|
||||
yield fs.unlink(appPath);
|
||||
@@ -2065,8 +2046,8 @@ class MacBuilder {
|
||||
logger.success('You can find the app installer in', distPath);
|
||||
});
|
||||
}
|
||||
getBuildedAppPath(npmDirectory, dmgName) {
|
||||
return path.join(npmDirectory, 'src-tauri/target/release/bundle/dmg', dmgName);
|
||||
getBuildAppPath(npmDirectory, dmgName) {
|
||||
return path.join(npmDirectory, 'src-tauri/target/universal-apple-darwin/release/bundle/dmg', dmgName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2102,7 +2083,7 @@ class WinBuilder {
|
||||
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 appPath = this.getBuildAppPath(npmDirectory, msiName);
|
||||
const distPath = path.resolve(`${name}.msi`);
|
||||
yield fs.copyFile(appPath, distPath);
|
||||
yield fs.unlink(appPath);
|
||||
@@ -2110,7 +2091,7 @@ class WinBuilder {
|
||||
logger.success('You can find the app installer in', distPath);
|
||||
});
|
||||
}
|
||||
getBuildedAppPath(npmDirectory, dmgName) {
|
||||
getBuildAppPath(npmDirectory, dmgName) {
|
||||
return path.join(npmDirectory, 'src-tauri/target/release/bundle/msi', dmgName);
|
||||
}
|
||||
}
|
||||
@@ -2144,7 +2125,7 @@ class LinuxBuilder {
|
||||
const { name } = options;
|
||||
yield mergeTauriConfig(url, options, tauriConf);
|
||||
yield shellExec(`cd ${npmDirectory} && npm install && npm run build`);
|
||||
let arch = "";
|
||||
let arch;
|
||||
if (process.arch === "x64") {
|
||||
arch = "amd64";
|
||||
}
|
||||
@@ -2152,21 +2133,21 @@ class LinuxBuilder {
|
||||
arch = process.arch;
|
||||
}
|
||||
const debName = `${name}_${tauriConf.package.version}_${arch}.deb`;
|
||||
const appPath = this.getBuildedAppPath(npmDirectory, "deb", debName);
|
||||
const appPath = this.getBuildAppPath(npmDirectory, "deb", debName);
|
||||
const distPath = path.resolve(`${name}.deb`);
|
||||
yield fs.copyFile(appPath, distPath);
|
||||
yield fs.unlink(appPath);
|
||||
const appImageName = `${name}_${tauriConf.package.version}_${arch}.AppImage`;
|
||||
const appImagePath = this.getBuildedAppPath(npmDirectory, "appimage", appImageName);
|
||||
const appImagePath = this.getBuildAppPath(npmDirectory, "appimage", appImageName);
|
||||
const distAppPath = path.resolve(`${name}.AppImage`);
|
||||
yield fs.copyFile(appImagePath, distAppPath);
|
||||
yield fs.unlink(appImagePath);
|
||||
logger.success('Build success!');
|
||||
logger.success('You can find the deb app installer in', distPath);
|
||||
logger.success('You can find the Appimage app installer in', distAppPath);
|
||||
logger.success('You can find the AppImage app installer in', distAppPath);
|
||||
});
|
||||
}
|
||||
getBuildedAppPath(npmDirectory, packageType, packageName) {
|
||||
getBuildAppPath(npmDirectory, packageType, packageName) {
|
||||
return path.join(npmDirectory, 'src-tauri/target/release/bundle/', packageType, packageName);
|
||||
}
|
||||
}
|
||||
@@ -2187,7 +2168,7 @@ class BuilderFactory {
|
||||
}
|
||||
|
||||
var name = "pake-cli";
|
||||
var version = "1.0.1";
|
||||
var version = "1.2.0";
|
||||
var description = "🤱🏻 很简单的用 Rust 打包网页生成很小的桌面 App 🤱🏻 A simple way to make any web page a desktop application using Rust.";
|
||||
var engines = {
|
||||
node: "^14.13 || >=16.0.0"
|
||||
@@ -2303,7 +2284,7 @@ program
|
||||
.option('--transparent', 'transparent title bar', DEFAULT_PAKE_OPTIONS.transparent)
|
||||
.option('--debug', 'debug', DEFAULT_PAKE_OPTIONS.transparent)
|
||||
.action((url, options) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
checkUpdateTips();
|
||||
yield checkUpdateTips();
|
||||
if (!url) {
|
||||
// 直接 pake 不需要出现url提示
|
||||
program.help();
|
||||
@@ -2315,6 +2296,6 @@ program
|
||||
const builder = BuilderFactory.create();
|
||||
yield builder.prepare();
|
||||
const appOptions = yield handleOptions(options, url);
|
||||
builder.build(url, appOptions);
|
||||
yield builder.build(url, appOptions);
|
||||
}));
|
||||
program.parse();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pake-cli",
|
||||
"version": "1.1.0",
|
||||
"version": "1.2.0",
|
||||
"description": "🤱🏻 很简单的用 Rust 打包网页生成很小的桌面 App 🤱🏻 A simple way to make any web page a desktop application using Rust.",
|
||||
"engines": {
|
||||
"node": "^14.13 || >=16.0.0"
|
||||
|
||||
3
script/build.sh
vendored
3
script/build.sh
vendored
@@ -45,7 +45,6 @@ if [[ "$OSTYPE" =~ ^linux ]]; then
|
||||
# for linux, package name may be com.xxx.xxx
|
||||
echo "rename package name"
|
||||
export desktop_file="src-tauri/assets/${package_prefix}.weread.desktop"
|
||||
# sed -i "s/\"productName\": \"weread\"/\"productName\": \"${package_prefix}-weread\"/g" src-tauri/tauri.conf.json
|
||||
$sd "\"productName\": \"WeRead\"" "\"productName\": \"${package_prefix}-weread\"" src-tauri/tauri.conf.json
|
||||
fi
|
||||
|
||||
@@ -109,7 +108,6 @@ do
|
||||
if [[ "$OSTYPE" =~ ^darwin ]]; then
|
||||
|
||||
npm run tauri build -- --target universal-apple-darwin
|
||||
# mv src-tauri/target/release/bundle/dmg/*.dmg output/macos/${package_title}_x64.dmg
|
||||
mv src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg output/macos/${package_title}.dmg
|
||||
fi
|
||||
|
||||
@@ -119,4 +117,3 @@ done
|
||||
|
||||
echo "build all package success!"
|
||||
echo "you run 'rm src-tauri/assets/*.desktop && git checkout src-tauri' to recovery code"
|
||||
# rm src-tauri/assets/*.desktop && git checkout src-tauri
|
||||
|
||||
@@ -1,30 +1 @@
|
||||
{
|
||||
"package": {
|
||||
"productName": "WeRead",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"tauri": {
|
||||
"windows": [
|
||||
{
|
||||
"url": "https://weread.qq.com/",
|
||||
"transparent": true,
|
||||
"fullscreen": false,
|
||||
"width": 1200,
|
||||
"height": 780,
|
||||
"resizable": true
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
},
|
||||
"updater": {
|
||||
"active": false
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"devPath": "../dist",
|
||||
"distDir": "../dist",
|
||||
"beforeBuildCommand": "",
|
||||
"beforeDevCommand": ""
|
||||
}
|
||||
}
|
||||
{"package":{"productName":"baidu","version":"1.0.0"},"tauri":{"windows":[{"url":"https://baidu.com","transparent":false,"fullscreen":false,"width":1200,"height":780,"resizable":true}],"security":{"csp":null},"updater":{"active":false},"bundle":{"icon":["/Users/tw93/www/pake/src-tauri/icons/icon.icns"],"identifier":"pake-bb6e08","active":true,"category":"DeveloperTool","copyright":"","externalBin":[],"longDescription":"","macOS":{"entitlements":null,"exceptionDomain":"","frameworks":[],"providerShortName":null,"signingIdentity":null},"resources":[],"shortDescription":"","targets":["dmg"]}}}
|
||||
@@ -1,25 +1 @@
|
||||
{
|
||||
"tauri": {
|
||||
"bundle": {
|
||||
"icon": [
|
||||
"icons/weread.icns"
|
||||
],
|
||||
"identifier": "com.tw93.weread",
|
||||
"active": true,
|
||||
"category": "DeveloperTool",
|
||||
"copyright": "",
|
||||
"externalBin": [],
|
||||
"longDescription": "",
|
||||
"macOS": {
|
||||
"entitlements": null,
|
||||
"exceptionDomain": "",
|
||||
"frameworks": [],
|
||||
"providerShortName": null,
|
||||
"signingIdentity": null
|
||||
},
|
||||
"resources": [],
|
||||
"shortDescription": "",
|
||||
"targets": ["dmg"]
|
||||
}
|
||||
}
|
||||
}
|
||||
{"tauri":{"bundle":{"icon":["/Users/tw93/www/pake/src-tauri/icons/icon.icns"],"identifier":"pake-bb6e08","active":true,"category":"DeveloperTool","copyright":"","externalBin":[],"longDescription":"","macOS":{"entitlements":null,"exceptionDomain":"","frameworks":[],"providerShortName":null,"signingIdentity":null},"resources":[],"shortDescription":"","targets":["dmg"]}}}
|
||||
Reference in New Issue
Block a user