From 0a9e455cf710dc089f93b19793e6fe3246cd7002 Mon Sep 17 00:00:00 2001 From: Xi Xu Date: Tue, 19 Aug 2025 20:41:19 +0800 Subject: [PATCH] Add express to dependencies and improve Dockerfile Added express as a production dependency in package.json and updated the Dockerfile to install dependencies more efficiently using npm ci when package-lock.json is present. This streamlines the build process and ensures express is available in production environments. --- Dockerfile | 8 +++--- package.json | 69 ++++++++++++++++++++++++++-------------------------- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/Dockerfile b/Dockerfile index bebd37d..3493d0c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,11 +4,11 @@ FROM node:20-alpine # Set the working directory inside the container WORKDIR /app -# Copy package.json first to leverage Docker cache for dependencies -COPY package.json ./ +# Copy package.json and package-lock.json first to leverage Docker cache for dependencies +COPY package.json package-lock.json* ./ -# Install dependencies including express for standalone server -RUN npm ci --only=production && npm install express +# Install dependencies - use npm ci for reproducible builds if package-lock.json exists, otherwise npm install +RUN if [ -f package-lock.json ]; then npm ci --only=production; else npm install --only=production; fi # Copy the rest of the application code COPY . . diff --git a/package.json b/package.json index e562595..436f562 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,37 @@ { - "dependencies": { - "xget": "file:" - }, - "devDependencies": { - "@cloudflare/vitest-pool-workers": "^0.8.36", - "@cloudflare/workers-types": "^4.20250724.0", - "eslint": "^9.31.0", - "prettier": "^3.6.2", - "vitest": "^3.1.4", - "wrangler": "^4.26.0" - }, - "name": "xget", - "private": false, - "scripts": { - "deploy": "wrangler deploy", - "deploy:vercel": "vercel --prod", - "dev": "wrangler dev", - "dev:vercel": "vercel dev", - "format": "prettier --write src/ test/ *.js *.json *.md", - "format:check": "prettier --check src/ test/ *.js *.json *.md", - "lint": "eslint src/ test/", - "lint:fix": "eslint src/ test/ --fix", - "preview:vercel": "vercel", - "start": "wrangler dev", - "start:vercel": "vercel dev", - "test": "vitest", - "test:coverage": "vitest run --coverage", - "test:run": "vitest run", - "test:ui": "vitest --ui", - "test:watch": "vitest --watch", - "type-check": "tsc --noEmit" - }, - "type": "module", - "version": "1.0.0" + "dependencies": { + "express": "^4.19.2", + "xget": "file:" + }, + "devDependencies": { + "@cloudflare/vitest-pool-workers": "^0.8.36", + "@cloudflare/workers-types": "^4.20250724.0", + "eslint": "^9.31.0", + "prettier": "^3.6.2", + "vitest": "^3.1.4", + "wrangler": "^4.26.0" + }, + "name": "xget", + "private": false, + "scripts": { + "deploy": "wrangler deploy", + "deploy:vercel": "vercel --prod", + "dev": "wrangler dev", + "dev:vercel": "vercel dev", + "format": "prettier --write src/ test/ *.js *.json *.md", + "format:check": "prettier --check src/ test/ *.js *.json *.md", + "lint": "eslint src/ test/", + "lint:fix": "eslint src/ test/ --fix", + "preview:vercel": "vercel", + "start": "wrangler dev", + "start:vercel": "vercel dev", + "test": "vitest", + "test:coverage": "vitest run --coverage", + "test:run": "vitest run", + "test:ui": "vitest --ui", + "test:watch": "vitest --watch", + "type-check": "tsc --noEmit" + }, + "type": "module", + "version": "1.0.0" }