Crescendo Lab เอกสาร ดีพลอย
ไทย
สมัครใช้งาน

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

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

อัปเดตล่าสุด
ดู Markdown เปิดใน Claude เปิดใน ChatGPT

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

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

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

ไม่ต้องเขียน Dockerfile ถ้าโปรเจกต์มี Dockerfile อยู่ชั้นบนสุด จะใช้ไฟล์นั้นแทนการตรวจหา ดูวิธีปิดได้ที่การตั้งค่าการบิลด์

ไม่ต้องใส่สิ่งเหล่านี้ใน zip

node_modules, .git, dist และ .env แพลตฟอร์มติดตั้งแพ็กเกจเอง และจะข้ามไปถ้ามีอยู่

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

กลายเป็นหน้าเว็บกลายเป็นแอป
Vite (React, Vue, Svelte), Create React App, Vue CLINext.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.js22ALPACK_NODE_VERSION
คำสั่งติดตั้งnpm ciALPACK_INSTALL_CMD
คำสั่งบิลด์npm run build:prodALPACK_BUILD_CMD
คำสั่งเริ่มทำงานnode dist/server.jsALPACK_START_CMD
โฟลเดอร์ผลลัพธ์dist/browserALPACK_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