@@ -5,13 +5,13 @@ import { readFileSync, writeFileSync } from 'fs';
55const VERSION = process . env . VERSION ?? 'dev' ;
66
77const targets = [
8- { bunTarget : 'bun-linux-x64' , platform : 'linux-x64' , output : 'minimax-linux-x64' , archive : 'minimax-linux-x64.tar.gz ' } ,
9- { bunTarget : 'bun-linux-x64-musl' , platform : 'linux-x64-musl' , output : 'minimax-linux-x64-musl' , archive : 'minimax-linux-x64-musl.tar.gz ' } ,
10- { bunTarget : 'bun-linux-arm64' , platform : 'linux-arm64' , output : 'minimax-linux-arm64' , archive : 'minimax-linux-arm64.tar.gz ' } ,
11- { bunTarget : 'bun-linux-arm64-musl' , platform : 'linux-arm64-musl' , output : 'minimax-linux-arm64-musl' , archive : 'minimax-linux-arm64-musl.tar.gz ' } ,
12- { bunTarget : 'bun-darwin-x64' , platform : 'darwin-x64' , output : 'minimax-darwin-x64' , archive : 'minimax-darwin-x64.tar.gz ' } ,
13- { bunTarget : 'bun-darwin-arm64' , platform : 'darwin-arm64' , output : 'minimax-darwin-arm64' , archive : 'minimax-darwin-arm64.tar.gz ' } ,
14- { bunTarget : 'bun-windows-x64' , platform : 'windows-x64' , output : 'minimax-windows-x64.exe' , archive : 'minimax-windows-x64.zip ' } ,
8+ { bunTarget : 'bun-linux-x64' , platform : 'linux-x64' , output : 'minimax-linux-x64' } ,
9+ { bunTarget : 'bun-linux-x64-musl' , platform : 'linux-x64-musl' , output : 'minimax-linux-x64-musl' } ,
10+ { bunTarget : 'bun-linux-arm64' , platform : 'linux-arm64' , output : 'minimax-linux-arm64' } ,
11+ { bunTarget : 'bun-linux-arm64-musl' , platform : 'linux-arm64-musl' , output : 'minimax-linux-arm64-musl' } ,
12+ { bunTarget : 'bun-darwin-x64' , platform : 'darwin-x64' , output : 'minimax-darwin-x64' } ,
13+ { bunTarget : 'bun-darwin-arm64' , platform : 'darwin-arm64' , output : 'minimax-darwin-arm64' } ,
14+ { bunTarget : 'bun-windows-x64' , platform : 'windows-x64' , output : 'minimax-windows-x64.exe' } ,
1515] ;
1616
1717function sha256 ( path : string ) : string {
@@ -22,31 +22,42 @@ console.log(`Building minimax-cli ${VERSION}...\n`);
2222
2323const manifest : {
2424 version : string ;
25- platforms : Record < string , { archive : string ; checksum : string } > ;
25+ platforms : Record < string , { file : string ; checksum : string } > ;
2626} = { version : VERSION , platforms : { } } ;
2727
28- for ( const { bunTarget, platform, output, archive } of targets ) {
28+ // Platform standalones
29+ for ( const { bunTarget, platform, output } of targets ) {
2930 const outPath = `dist/${ output } ` ;
30- const archivePath = `dist/${ archive } ` ;
3131 process . stdout . write ( ` ${ output } ...` ) ;
32+
3233 await $ `bun build src/main.ts \
3334 --compile \
3435 --minify \
3536 --target ${ bunTarget } \
3637 --outfile ${ outPath } \
3738 --define "process.env.CLI_VERSION='${ VERSION } '"` . quiet ( ) ;
3839
39- // Compress: tar.gz for unix, zip for windows
40- if ( archive . endsWith ( '.zip' ) ) {
41- await $ `zip -j ${ archivePath } ${ outPath } ` . quiet ( ) ;
42- } else {
43- await $ `tar -czf ${ archivePath } -C dist ${ output } ` . quiet ( ) ;
44- }
45-
46- manifest . platforms [ platform ] = { archive, checksum : sha256 ( archivePath ) } ;
40+ manifest . platforms [ platform ] = { file : output , checksum : sha256 ( outPath ) } ;
4741 console . log ( ' ✓' ) ;
4842}
4943
44+ // Node.js .mjs bundle (much smaller, requires node >= 18)
45+ process . stdout . write ( ' minimax.mjs...' ) ;
46+ const mjsPath = 'dist/minimax.mjs' ;
47+
48+ await $ `bun build src/main.ts \
49+ --outfile ${ mjsPath } \
50+ --target node \
51+ --minify \
52+ --define "process.env.CLI_VERSION='${ VERSION } '"` . quiet ( ) ;
53+
54+ // Prepend shebang so the file is directly executable
55+ const mjsContent = readFileSync ( mjsPath ) ;
56+ writeFileSync ( mjsPath , Buffer . concat ( [ Buffer . from ( '#!/usr/bin/env node\n' ) , mjsContent ] ) ) ;
57+
58+ manifest . platforms [ 'node' ] = { file : 'minimax.mjs' , checksum : sha256 ( mjsPath ) } ;
59+ console . log ( ' ✓' ) ;
60+
5061writeFileSync ( 'dist/manifest.json' , JSON . stringify ( manifest , null , 2 ) ) ;
5162console . log ( ' manifest.json ✓' ) ;
52- console . log ( `\nDone. ${ targets . length } archives in dist/` ) ;
63+ console . log ( `\nDone. ${ targets . length + 1 } builds in dist/` ) ;
0 commit comments