เวิร์กสเปซ pnpm กับ TypeScript
กำหนดค่าโมโนรีโปด้วย pnpm และ tsconfig ที่ใช้ร่วมกัน
เวิร์กสเปซ pnpm กับ TypeScript เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
pnpm เวิร์กสเปซคืออะไร
pnpm เวิร์กสเปซช่วยให้คุณจัดการหลายแพ็กเกจในรีโพเดียว โดยใช้โครงสร้าง node_modules ร่วมกัน ลดการใช้พื้นที่ดิสก์ และเปิดให้แพ็กเกจต่าง ๆ นำเข้าข้ามกันได้
# pnpm-workspace.yaml
packages:
- "packages/*"
- "apps/*"การสร้างโครงสร้างเวิร์กสเปซ
โมโนรีโป pnpm โดยทั่วไปมี packages/ สำหรับไลบรารีที่ใช้ร่วมกัน และ apps/ สำหรับแอปพลิเคชันที่นำไปใช้งานได้
monorepo/
├── pnpm-workspace.yaml
├── package.json # root
├── packages/
│ ├── core/ # shared logic
│ └── ui/ # shared components
└── apps/
└── web/ # Next.js apptsconfig.json ระดับราก
tsconfig ระดับรากกำหนดตัวเลือกพื้นฐานและอ้างอิงแพ็กเกจเวิร์กสเปซทั้งหมด
{
"compilerOptions": {
"strict": true,
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler"
},
"references": [
{ "path": "packages/core" },
{ "path": "packages/ui" },
{ "path": "apps/web" }
]
}tsconfig ระดับแพ็กเกจ
แต่ละแพ็กเกจสืบทอดการกำหนดค่าจากระดับราก และตั้งค่า composite กับ outDir ของตนเอง
// packages/core/tsconfig.json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"composite": true,
"outDir": "./dist",
"rootDir": "./src"
}
}การติดตั้งการพึ่งพาข้ามแพ็กเกจ
ใช้ pnpm add ร่วมกับโพรโทคอลเวิร์กสเปซเพื่อเชื่อมแพ็กเกจภายในโมโนรีโป
# Add @myapp/core to apps/web
pnpm add @myapp/core --workspace --filter apps/web
# package.json entry:
# "@myapp/core": "workspace:*"การแก้ไขเส้นทางของ TypeScript
เพิ่มนามแฝง paths ใน tsconfig ระดับราก เพื่อให้ TypeScript แก้ไขแพ็กเกจเวิร์กสเปซไปยังต้นฉบับระหว่างการพัฒนา
{
"compilerOptions": {
"paths": {
"@myapp/core": ["./packages/core/src/index.ts"],
"@myapp/ui": ["./packages/ui/src/index.ts"]
}
}
}การสร้างแพ็กเกจทั้งหมด
ใช้ tsc --build จากระดับรากเพื่อสร้างแพ็กเกจแบบผสมทั้งหมดตามลำดับการพึ่งพา
# Build all
tsc --build
# Or with pnpm recursive script:
pnpm -r buildการเรียกใช้สคริปต์ข้ามแพ็กเกจ
pnpm -r (แบบเวียนทำซ้ำ) หรือ --filter จะเรียกใช้สคริปต์ในแพ็กเกจที่ตรงกันทั้งหมด
# Run tests in all packages
pnpm -r test
# Run only in packages/core
pnpm --filter @myapp/core testการกำหนดค่า ESLint และ Prettier ร่วมกัน
เก็บการกำหนดค่าการตรวจรูปแบบโค้ดไว้ในแพ็กเกจร่วม และให้แต่ละแพ็กเกจสืบทอดการกำหนดค่าเหล่านั้น เพื่อให้รูปแบบโค้ดในโมโนรีโอสอดคล้องกัน
// packages/eslint-config/index.js
module.exports = { extends: ["airbnb-typescript"], ... };การผสานรวมกับ Turborepo
เพิ่ม Turborepo เพื่อแคชและทำงานสร้าง ทดสอบ และตรวจรูปแบบโค้ดแบบขนาน โดยใช้กราฟเวิร์กสเปซของ pnpm เพื่อจัดลำดับการพึ่งพา
npx create-turbo@latest
# or add to existing monorepo:
pnpm add turbo -wทบทวน: pnpm เวิร์กสเปซกับ TypeScript
pnpm เวิร์กสเปซร่วมกับการอ้างอิงโครงการของ TypeScript สร้างการตั้งค่าโมโนรีโปที่ทรงพลัง ได้แก่ node_modules ร่วมกัน การนำเข้าข้ามแพ็กเกจผ่าน workspace:* และการสร้างที่รวดเร็วด้วย tsc --build
ตรวจสอบอย่างรวดเร็ว
ไฟล์ใดกำหนดว่าไดเรกทอรีใดเป็นแพ็กเกจในเวิร์กสเปซของ pnpm
สิ่งที่ได้เรียนรู้
pnpm เวิร์กสเปซร่วมกับการอ้างอิงโครงการของ TypeScript ช่วยให้คุณมีโมโนรีโปที่มีประสิทธิภาพ พร้อม node_modules ร่วมกัน การเชื่อมโยงข้ามแพ็กเกจด้วยโพรโทคอลเวิร์กสเปซ และการสร้างแบบเพิ่มทีละส่วน เพิ่ม Turborepo เพื่อใช้แคชและทำงานแบบขนาน
คำถามที่พบบ่อย
บทเรียน “เวิร์กสเปซ pnpm กับ TypeScript” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เวิร์กสเปซ pnpm กับ TypeScript” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เวิร์กสเปซ pnpm กับ TypeScript”
กำหนดค่าโมโนรีโปด้วย pnpm และ tsconfig ที่ใช้ร่วมกัน คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “เวิร์กสเปซ pnpm กับ TypeScript” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อธิบายการอ้างอิงโครงการ TypeScript
- เวิร์กสเปซ pnpm กับ TypeScript
- กลยุทธ์แพ็กเกจชนิดที่ใช้ร่วมกัน
- การบิลด์แบบเพิ่มทีละส่วนและแคชในโมโนรีโป