feat: npm 离线打包脚本 — scripts/pack-npm.sh

一键构建 + 打包为 ccp-<version>.tgz:
  bash scripts/pack-npm.sh

目标机器安装(需要 Bun):
  npm install -g ./ccp-2.6.5.tgz
  ccp --version

产物 5.5MB,包含 dist-nosplit/cli.js + bin wrapper
This commit is contained in:
James Feng 2026-06-04 16:13:29 +08:00
parent 452e2f01c8
commit e806327608
2 changed files with 60 additions and 0 deletions

1
.gitignore vendored
View File

@ -35,3 +35,4 @@ dist-split-test/
# Local analytics data (never upload)
*.jsonl
.claude/
ccp-*.tgz

59
scripts/pack-npm.sh Normal file
View File

@ -0,0 +1,59 @@
#!/usr/bin/env bash
# scripts/pack-npm.sh — 构建 + 打包为 npm .tgz 离线安装包
set -e
echo "=== 1. 构建 ==="
bun run build --no-splitting
echo "=== 2. 准备打包目录 ==="
VERSION=$(node -p "require('./package.json').version")
PACK_DIR="/tmp/ccp-pack"
rm -rf "$PACK_DIR"
mkdir -p "$PACK_DIR/bin"
echo "=== 3. 复制产物 ==="
cp dist-nosplit/cli.js "$PACK_DIR/cli.js"
chmod +x "$PACK_DIR/cli.js"
echo "=== 4. 创建 bin 入口 ==="
cat > "$PACK_DIR/bin/ccp" << 'BINEOF'
#!/usr/bin/env bash
# ccp — CC Pure CLI wrapper
# Requires: bun (https://bun.sh)
DIR="$(cd "$(dirname "$0")/.." && pwd)"
exec bun "$DIR/cli.js" "$@"
BINEOF
chmod +x "$PACK_DIR/bin/ccp"
echo "=== 5. 生成 package.json ==="
cat > "$PACK_DIR/package.json" << PKGEOF
{
"name": "ccp",
"version": "$VERSION",
"description": "CC Pure — 纯净版 Claude Code CLI",
"license": "UNLICENSED",
"private": true,
"bin": {
"ccp": "./bin/ccp"
},
"engines": {
"bun": ">=1.3.0"
},
"files": [
"cli.js",
"bin/"
]
}
PKGEOF
echo "=== 6. 打包 ==="
TARBALL="ccp-${VERSION}.tgz"
(cd "$PACK_DIR" && npm pack --pack-destination /tmp)
mv "/tmp/$TARBALL" "./$TARBALL"
echo ""
echo "✅ 完成: $(pwd)/$TARBALL ($(du -h ./$TARBALL | cut -f1))"
echo ""
echo "安装方式(目标机器需要 Bun:"
echo " npm install -g ./$TARBALL"
echo " ccp --version"