From 1cb1c1a3335a999f3c5f1d321104bd273a9fba01 Mon Sep 17 00:00:00 2001 From: Caileb Date: Thu, 29 May 2025 15:48:20 -0500 Subject: [PATCH] esbuild for prod --- Dockerfile | 12 ++++++++---- docker-compose-synology.yml | 2 +- esbuild.config.js | 12 ++++++++++++ package.json | 10 ++++++---- 4 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 esbuild.config.js diff --git a/Dockerfile b/Dockerfile index 2ac3f2b..0decd3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,9 +4,10 @@ FROM node:18-alpine # Set working directory WORKDIR /app -# Copy package files and install dependencies -COPY package.json package-lock.json ./ -RUN npm ci --only=production +# Copy package files, config script, and install dependencies +COPY package.json package-lock.json esbuild.config.js ./ +# Install all dependencies, build with esbuild, then remove devDeps +RUN npm ci && npm run build && npm prune --production # Copy application source COPY . . @@ -14,5 +15,8 @@ COPY . . # Expose the application port EXPOSE 3000 +# Set NODE_ENV to production +ENV NODE_ENV=production + # Run the application -CMD ["npm", "start"] \ No newline at end of file +CMD ["npm", "run", "daemon"] \ No newline at end of file diff --git a/docker-compose-synology.yml b/docker-compose-synology.yml index 43ccc22..a86bcc6 100644 --- a/docker-compose-synology.yml +++ b/docker-compose-synology.yml @@ -11,4 +11,4 @@ services: - /volume1/docker/Checkpoint/.env:/app/.env:ro ports: - "3000:3000" - restart: unless-stopped \ No newline at end of file + restart: unless-stopped \ No newline at end of file diff --git a/esbuild.config.js b/esbuild.config.js new file mode 100644 index 0000000..c491e4f --- /dev/null +++ b/esbuild.config.js @@ -0,0 +1,12 @@ +import { build } from 'esbuild'; + +build({ + entryPoints: ['index.js'], + bundle: true, + platform: 'node', + target: 'node18', + outfile: 'dist/index.js', + minify: true, + legalComments: 'none', + drop: ['console', 'debugger'], +}).catch(() => process.exit(1)); \ No newline at end of file diff --git a/package.json b/package.json index a80f681..3d40e76 100644 --- a/package.json +++ b/package.json @@ -5,14 +5,16 @@ "scripts": { "start": "node index.js", "dev": "nodemon index.js", - "daemon": "pm2 start index.js --name checkpoint", + "daemon": "pm2 start dist/index.js --name checkpoint", "stop": "pm2 stop checkpoint", "restart": "pm2 restart checkpoint", - "logs": "pm2 logs checkpoint" + "logs": "pm2 logs checkpoint", + "build": "node esbuild.config.js" }, "devDependencies": { "nodemon": "^3.0.2", - "prettier": "^2.8.8" + "prettier": "^2.8.8", + "esbuild": "^0.18.17" }, "dependencies": { "@iarna/toml": "^2.2.5", @@ -31,4 +33,4 @@ "engines": { "node": ">=18.0.0" } -} +} \ No newline at end of file