mirror of
https://github.com/langgenius/dify.git
synced 2026-04-05 05:09:19 +08:00
refactor: introduce pnpm workspace (#34241)
Co-authored-by: yyh <yuanyouhuilyz@gmail.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -100,6 +100,10 @@ Notes:
|
||||
- Chat/completion require a stable `user` identifier in the request payload.
|
||||
- For streaming responses, iterate the returned AsyncIterable. Use `stream.toText()` to collect text.
|
||||
|
||||
## Maintainers
|
||||
|
||||
This package is published from the repository workspace. Install dependencies from the repository root with `pnpm install`, then use `./scripts/publish.sh` for dry runs and publishing so `catalog:` dependencies are resolved before release.
|
||||
|
||||
## License
|
||||
|
||||
This SDK is released under the MIT License.
|
||||
|
||||
@@ -54,24 +54,17 @@
|
||||
"publish:npm": "./scripts/publish.sh"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.13.6"
|
||||
"axios": "catalog:"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^10.0.1",
|
||||
"@types/node": "^25.4.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.57.0",
|
||||
"@typescript-eslint/parser": "^8.57.0",
|
||||
"@vitest/coverage-v8": "4.0.18",
|
||||
"eslint": "^10.0.3",
|
||||
"tsup": "^8.5.1",
|
||||
"typescript": "^5.9.3",
|
||||
"vitest": "^4.0.18"
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
"flatted@<=3.4.1": "3.4.2",
|
||||
"picomatch@>=4.0.0 <4.0.4": "4.0.4",
|
||||
"rollup@>=4.0.0 <4.59.0": "4.59.0"
|
||||
}
|
||||
"@eslint/js": "catalog:",
|
||||
"@types/node": "catalog:",
|
||||
"@typescript-eslint/eslint-plugin": "catalog:",
|
||||
"@typescript-eslint/parser": "catalog:",
|
||||
"@vitest/coverage-v8": "catalog:",
|
||||
"eslint": "catalog:",
|
||||
"tsup": "catalog:",
|
||||
"typescript": "catalog:",
|
||||
"vitest": "catalog:"
|
||||
}
|
||||
}
|
||||
|
||||
2255
sdks/nodejs-client/pnpm-lock.yaml
generated
2255
sdks/nodejs-client/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -1,2 +0,0 @@
|
||||
onlyBuiltDependencies:
|
||||
- esbuild
|
||||
@@ -5,10 +5,12 @@
|
||||
# A beautiful and reliable script to publish the SDK to npm
|
||||
#
|
||||
# Usage:
|
||||
# ./scripts/publish.sh # Normal publish
|
||||
# ./scripts/publish.sh # Normal publish
|
||||
# ./scripts/publish.sh --dry-run # Test without publishing
|
||||
# ./scripts/publish.sh --skip-tests # Skip tests (not recommended)
|
||||
#
|
||||
# This script requires pnpm because the workspace uses catalog: dependencies.
|
||||
#
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
@@ -62,11 +64,27 @@ divider() {
|
||||
echo -e "${DIM}─────────────────────────────────────────────────────────────────${NC}"
|
||||
}
|
||||
|
||||
run_npm() {
|
||||
env \
|
||||
-u npm_config_npm_globalconfig \
|
||||
-u NPM_CONFIG_NPM_GLOBALCONFIG \
|
||||
-u npm_config_verify_deps_before_run \
|
||||
-u NPM_CONFIG_VERIFY_DEPS_BEFORE_RUN \
|
||||
-u npm_config__jsr_registry \
|
||||
-u NPM_CONFIG__JSR_REGISTRY \
|
||||
-u npm_config_catalog \
|
||||
-u NPM_CONFIG_CATALOG \
|
||||
-u npm_config_overrides \
|
||||
-u NPM_CONFIG_OVERRIDES \
|
||||
npm "$@"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# Configuration
|
||||
# ============================================================================
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
REPO_ROOT="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || (cd "$SCRIPT_DIR/../../.." && pwd))"
|
||||
|
||||
DRY_RUN=false
|
||||
SKIP_TESTS=false
|
||||
@@ -123,23 +141,23 @@ main() {
|
||||
error "npm is not installed"
|
||||
exit 1
|
||||
fi
|
||||
NPM_VERSION=$(npm -v)
|
||||
NPM_VERSION=$(run_npm -v)
|
||||
success "npm: v$NPM_VERSION"
|
||||
|
||||
# Check pnpm (optional, for local dev)
|
||||
if command -v pnpm &> /dev/null; then
|
||||
PNPM_VERSION=$(pnpm -v)
|
||||
success "pnpm: v$PNPM_VERSION"
|
||||
else
|
||||
info "pnpm not found (optional)"
|
||||
if ! command -v pnpm &> /dev/null; then
|
||||
error "pnpm is required because this workspace publishes catalog: dependencies"
|
||||
info "Install pnpm with Corepack: corepack enable"
|
||||
exit 1
|
||||
fi
|
||||
PNPM_VERSION=$(pnpm -v)
|
||||
success "pnpm: v$PNPM_VERSION"
|
||||
|
||||
# Check npm login status
|
||||
if ! npm whoami &> /dev/null; then
|
||||
if ! run_npm whoami &> /dev/null; then
|
||||
error "Not logged in to npm. Run 'npm login' first."
|
||||
exit 1
|
||||
fi
|
||||
NPM_USER=$(npm whoami)
|
||||
NPM_USER=$(run_npm whoami)
|
||||
success "Logged in as: ${BOLD}$NPM_USER${NC}"
|
||||
|
||||
# ========================================================================
|
||||
@@ -154,11 +172,11 @@ main() {
|
||||
success "Version: ${BOLD}$PACKAGE_VERSION${NC}"
|
||||
|
||||
# Check if version already exists on npm
|
||||
if npm view "$PACKAGE_NAME@$PACKAGE_VERSION" version &> /dev/null; then
|
||||
if run_npm view "$PACKAGE_NAME@$PACKAGE_VERSION" version &> /dev/null; then
|
||||
error "Version $PACKAGE_VERSION already exists on npm!"
|
||||
echo ""
|
||||
info "Current published versions:"
|
||||
npm view "$PACKAGE_NAME" versions --json 2>/dev/null | tail -5
|
||||
run_npm view "$PACKAGE_NAME" versions --json 2>/dev/null | tail -5
|
||||
echo ""
|
||||
warning "Please update the version in package.json before publishing."
|
||||
exit 1
|
||||
@@ -170,11 +188,7 @@ main() {
|
||||
# ========================================================================
|
||||
step "Step 3/6: Installing dependencies..."
|
||||
|
||||
if command -v pnpm &> /dev/null; then
|
||||
pnpm install --frozen-lockfile 2>/dev/null || pnpm install
|
||||
else
|
||||
npm ci 2>/dev/null || npm install
|
||||
fi
|
||||
pnpm --dir "$REPO_ROOT" install --frozen-lockfile 2>/dev/null || pnpm --dir "$REPO_ROOT" install
|
||||
success "Dependencies installed"
|
||||
|
||||
# ========================================================================
|
||||
@@ -185,11 +199,7 @@ main() {
|
||||
if [[ "$SKIP_TESTS" == true ]]; then
|
||||
warning "Skipping tests (--skip-tests flag)"
|
||||
else
|
||||
if command -v pnpm &> /dev/null; then
|
||||
pnpm test
|
||||
else
|
||||
npm test
|
||||
fi
|
||||
pnpm test
|
||||
success "All tests passed"
|
||||
fi
|
||||
|
||||
@@ -201,11 +211,7 @@ main() {
|
||||
# Clean previous build
|
||||
rm -rf dist
|
||||
|
||||
if command -v pnpm &> /dev/null; then
|
||||
pnpm run build
|
||||
else
|
||||
npm run build
|
||||
fi
|
||||
pnpm run build
|
||||
success "Build completed"
|
||||
|
||||
# Verify build output
|
||||
@@ -223,15 +229,32 @@ main() {
|
||||
# Step 6: Publish
|
||||
# ========================================================================
|
||||
step "Step 6/6: Publishing to npm..."
|
||||
|
||||
|
||||
PACK_DIR="$(mktemp -d)"
|
||||
trap 'rm -rf "$PACK_DIR"' EXIT
|
||||
|
||||
pnpm pack --pack-destination "$PACK_DIR" >/dev/null
|
||||
PACKAGE_TARBALL="$(find "$PACK_DIR" -maxdepth 1 -name '*.tgz' | head -n 1)"
|
||||
|
||||
if [[ -z "$PACKAGE_TARBALL" ]]; then
|
||||
error "Pack failed - no tarball generated"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if tar -xOf "$PACKAGE_TARBALL" package/package.json | grep -q '"catalog:'; then
|
||||
error "Packed manifest still contains catalog: references"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
divider
|
||||
echo -e "${CYAN}Package contents:${NC}"
|
||||
npm pack --dry-run 2>&1 | head -30
|
||||
tar -tzf "$PACKAGE_TARBALL" | head -30
|
||||
divider
|
||||
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
warning "DRY-RUN: Skipping actual publish"
|
||||
echo ""
|
||||
info "Packed artifact: $PACKAGE_TARBALL"
|
||||
info "To publish for real, run without --dry-run flag"
|
||||
else
|
||||
echo ""
|
||||
@@ -239,7 +262,7 @@ main() {
|
||||
echo -e "${DIM}Press Enter to continue, or Ctrl+C to cancel...${NC}"
|
||||
read -r
|
||||
|
||||
npm publish --access public
|
||||
pnpm publish --access public --no-git-checks
|
||||
|
||||
echo ""
|
||||
success "🎉 Successfully published ${BOLD}$PACKAGE_NAME@$PACKAGE_VERSION${NC} to npm!"
|
||||
|
||||
Reference in New Issue
Block a user