From 0de97bf01a1cd307d2463a5b66b7807ae5ca45aa Mon Sep 17 00:00:00 2001 From: pshu Date: Thu, 4 Jan 2024 17:51:26 +0800 Subject: [PATCH] chore(scripts): sync okam before pub bundler (#843) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 🔧 script check okam whether synced * refactor: 🎨 slient sync logs * chore: 🔧 sync optinal deps in scripts --- packages/bundler-okam/.npmignore | 1 + packages/bundler-okam/package.json | 4 +++ .../bundler-okam/scripts/ensure_synced.ts | 31 +++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 packages/bundler-okam/.npmignore create mode 100644 packages/bundler-okam/scripts/ensure_synced.ts diff --git a/packages/bundler-okam/.npmignore b/packages/bundler-okam/.npmignore new file mode 100644 index 000000000..b744996d7 --- /dev/null +++ b/packages/bundler-okam/.npmignore @@ -0,0 +1 @@ +scripts diff --git a/packages/bundler-okam/package.json b/packages/bundler-okam/package.json index 1888bc3ac..50bb4809c 100644 --- a/packages/bundler-okam/package.json +++ b/packages/bundler-okam/package.json @@ -18,6 +18,10 @@ "rimraf": "5.0.1", "webpack-5-chain": "8.0.1" }, + "scripts": { + "prepublishOnly": "esno ./scripts/ensure_synced.ts", + "sync": "esno ./scripts/ensure_synced.ts" + }, "publishConfig": { "registry": "https://registry.antgroup-inc.cn" }, diff --git a/packages/bundler-okam/scripts/ensure_synced.ts b/packages/bundler-okam/scripts/ensure_synced.ts new file mode 100644 index 000000000..b092a1284 --- /dev/null +++ b/packages/bundler-okam/scripts/ensure_synced.ts @@ -0,0 +1,31 @@ +import 'zx/globals'; + +(async () => { + const makoVersion = + require('../package.json')['dependencies']['@okamjs/okam']; + + await retry(3, () => { + return (async () => { + await $`tnpm sync @okamjs/okam`.quiet(); + const info = + await $`tnpm info --json @okamjs/okam@${makoVersion}`.quiet(); + + const optionDeps = JSON.parse(info.stdout)['optionalDependencies']; + + await Promise.all( + Object.keys(optionDeps).map((key) => { + return $`tnpm info ${key}@${optionDeps[key]}`.quiet(); + }), + ); + })(); + }); + + console.error(chalk.bgGreen(chalk.white('SUCCEED')), chalk.green('synced')); +})().catch((err) => { + console.error(err); + console.error( + chalk.bgRed(chalk.white('FAILED')), + chalk.red('sync @okamjs/okam failed!'), + ); + process.exit(1); +});