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); +});