---
title: ดีพลอยจากซอร์สโค้ด
description: อัปโหลดโปรเจกต์ JavaScript ได้ทันทีโดยไม่ต้องมี Dockerfile Agent Lab จะตรวจหาเฟรมเวิร์ก บิลด์ให้ และทำเป็นหน้าเว็บหรือแอป
url: https://agentlab.cresclab.com/docs/th/deploy/source-build
language: th
updated: 2026-10-08
---

# ดีพลอยจากซอร์สโค้ด

อัปโหลดโปรเจกต์ JavaScript ได้ทันทีโดยไม่ต้องมี Dockerfile Agent Lab จะตรวจหาเฟรมเวิร์ก บิลด์ให้ และทำเป็นหน้าเว็บหรือแอป

## สิ่งที่เกิดขึ้น

บีบอัดโปรเจกต์เป็น zip โดยให้ `package.json` อยู่ชั้นบนสุด แล้วอัปโหลด แพลตฟอร์มจะอ่านโปรเจกต์ สร้างแผนการบิลด์ และบิลด์ให้

- โปรเจกต์ที่สร้างเฉพาะไฟล์สำหรับเบราว์เซอร์จะกลายเป็น**หน้าเว็บ** ให้บริการผ่าน CDN เส้นทางของแอปหน้าเดียว เช่น `/orders/42` จะตอบด้วย `index.html` ทั้งหมด
- โปรเจกต์ที่รันเซิร์ฟเวอร์จะกลายเป็น**แอปคอนเทนเนอร์** บิลด์เป็นอิมเมจที่รันด้วยผู้ใช้ที่ไม่ใช่ root บนพอร์ต 8080

ไม่ต้องเขียน Dockerfile ถ้าโปรเจกต์มี Dockerfile อยู่ชั้นบนสุด จะใช้ไฟล์นั้นแทนการตรวจหา ดูวิธีปิดได้ที่[การตั้งค่าการบิลด์](https://agentlab.cresclab.com/docs/th/deploy/source-build.md#build-settings)

> [!TIP] ไม่ต้องใส่สิ่งเหล่านี้ใน zip
> `node_modules`, `.git`, `dist` และ `.env` แพลตฟอร์มติดตั้งแพ็กเกจเอง และจะข้ามไปถ้ามีอยู่

## เฟรมเวิร์กที่รองรับ

| กลายเป็นหน้าเว็บ                                     | กลายเป็นแอป                                                  |
| ---------------------------------------------------- | ------------------------------------------------------------ |
| Vite (React, Vue, Svelte), Create React App, Vue CLI | Next.js (ถ้าตั้ง `output: "export"` จะเป็นหน้าเว็บ)          |
| Angular, Astro แบบสแตติก, HTML ที่มีสคริปต์บิลด์     | Nuxt, SvelteKit, Remix, React Router 7, Astro แบบ SSR        |
|                                                      | Express, Fastify, Koa, Hono, NestJS และเซิร์ฟเวอร์ Node อื่น |

npm, pnpm, Yarn และ Bun ตรวจจาก lockfile หรือฟิลด์ `packageManager` เวอร์ชัน Node.js มาจาก `engines.node`, `.nvmrc` หรือ `.node-version` ถ้าไม่มีจะใช้ LTS ล่าสุด (24) ใช้ได้ 18, 20, 22 และ 24

## ตัวแปรสภาพแวดล้อม

แผนจะแสดงตัวแปรที่โค้ดอ่าน (จาก `.env.example`, `process.env.*`, `import.meta.env.*`) และทำเครื่องหมายตัวที่ดูเหมือนข้อมูลลับ หรือจำเป็นตอนบิลด์ (เช่น `VITE_*`, `NEXT_PUBLIC_*`)

1. กรอกก่อนดีพลอย: แอปกรอกใน **การตั้งค่า › การตั้งค่าการทำงาน** (ข้อมูลลับใน **ข้อมูลลับ**) หน้าเว็บกรอกใน **การตั้งค่า › ตัวแปรการบิลด์** เวอร์ชันที่บิลด์จากซอร์สจะแสดงตัวแปรที่โค้ดอ่านแต่ยังไม่ได้ตั้ง
2. ตัวแปรจะถูกส่งให้การบิลด์ด้วย ตัวแปรตอนบิลด์จะถูกฝังในหน้าเว็บ จึงห้ามใส่ข้อมูลลับในตัวแปร `VITE_` หรือ `NEXT_PUBLIC_`
3. ข้อมูลลับจะถูกเมานต์ให้ขั้นตอนติดตั้งและบิลด์ (เช่น โทเคนของรีจิสทรีส่วนตัว) และจะไม่ถูกเขียนลงอิมเมจ

## การตั้งค่าการบิลด์

ถ้าการตรวจหาผิด ให้แก้ใน **การตั้งค่า › การตั้งค่าการบิลด์** ช่องที่เว้นว่างจะตรวจหาเอง

| การตั้งค่า                    | ตัวอย่าง              | ตัวแปร                     |
| ----------------------------- | --------------------- | -------------------------- |
| เวอร์ชัน Node.js              | `22`                  | `ALPACK_NODE_VERSION`      |
| คำสั่งติดตั้ง                 | `npm ci`              | `ALPACK_INSTALL_CMD`       |
| คำสั่งบิลด์                   | `npm run build:prod`  | `ALPACK_BUILD_CMD`         |
| คำสั่งเริ่มทำงาน              | `node dist/server.js` | `ALPACK_START_CMD`         |
| โฟลเดอร์ผลลัพธ์               | `dist/browser`        | `ALPACK_OUTPUT_DIR`        |
| ไม่ใช้ Dockerfile ของโปรเจกต์ | เปิด                  | `ALPACK_IGNORE_DOCKERFILE` |
| พาธของแอป                     | `apps/web`            | —                          |

ตัวแปรชื่อเดียวกันในการตั้งค่าการทำงานของสาขาจะมีผลเหนือการตั้งค่านี้ ตัวแปร `ALPACK_*` ใช้กับการบิลด์เท่านั้น และไม่ถูกส่งให้แอปที่กำลังทำงาน

ถ้าตั้งคำสั่งเริ่มทำงานให้โปรเจกต์ที่ตรวจพบว่าเป็นหน้าเว็บ จะกลายเป็นแอป

## Monorepo

ถ้า repository มีหลายโปรเจกต์ ให้อัปโหลดทั้ง repository แล้วตั้ง **พาธของแอป** ในการตั้งค่าการบิลด์เป็นโฟลเดอร์ของแอป เช่น `apps/web` แพลตฟอร์มจะตรวจหาและบิลด์ในโฟลเดอร์นั้น ดังนั้น `package.json` และ lockfile ของโฟลเดอร์นั้นจะกำหนดการบิลด์ แพ็กเกจจากส่วนอื่นของ repository เช่น dependency แบบ `workspace:*` ยังใช้ไม่ได้

## เมื่อการบิลด์ล้มเหลว

| สิ่งที่เห็น                         | วิธีแก้                                                                   |
| ----------------------------------- | ------------------------------------------------------------------------- |
| ไม่รู้ว่าจะบิลด์ซอร์สนี้อย่างไร     | วาง `package.json` ไว้ชั้นบนสุดของ zip หรือตั้งคำสั่งเริ่มทำงาน           |
| การบิลด์ไม่ได้สร้างไฟล์ใดเลย        | ตั้งโฟลเดอร์ผลลัพธ์เป็นที่ที่การบิลด์เขียนไฟล์จริง                        |
| สิ่งที่อัปโหลดให้แอปเป็นแค่หน้าเว็บ | แอปเปลี่ยนกลับเป็นหน้าเว็บไม่ได้ ให้สร้างแอปใหม่ หรือตั้งคำสั่งเริ่มทำงาน |
| คอมไพล์โมดูลเนทีฟไม่สำเร็จ          | คอมมิต lockfile แพลตฟอร์มจะเพิ่มคอมไพเลอร์เมื่อพบแพ็กเกจเนทีฟ             |

ดูแต่ละขั้นตอนได้ในบันทึกการบิลด์ของหน้าเวอร์ชัน ถ้าใช้เครื่องมือ AI ให้ขอแผนการบิลด์ก่อน ดู[เครื่องมือ MCP](https://agentlab.cresclab.com/docs/th/deploy/mcp-tools.md#sites)
