โครงสร้างและการจัดวาง Monorepo
เรียนรู้แนวปฏิบัติที่ดีในการจัดระเบียบโครงการ แพ็กเกจ และโค้ดที่ใช้ร่วมกันภายในคลัง Git เดียว
โครงสร้างและการจัดวาง Monorepo เป็นบทเรียน Git Advanced: Monorepo, Submodules & Workflows ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Git Advanced: Monorepo, Submodules & Workflows และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Git Advanced: Monorepo, Submodules & Workflows มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
Why Structure Matters
Welcome! In a monorepo, many projects live together in one place. A clear, thoughtful structure is super important for keeping things organized.
It helps developers quickly find what they need, promotes code sharing, and makes managing the entire codebase much easier as it grows.
The Monorepo Root
At the very top level of your monorepo, the root directory, you'll find files that apply to the entire repository. Think of them as global settings.
.git/: Git's internal tracking files..gitignore: Tells Git which files to ignore.README.md: The main description of your monorepo.package.json: (If using Node.js) Monorepo-level scripts or dependencies.tools/: Global utility scripts.
Grouping Projects: `apps` and `packages`
To keep things tidy, projects are usually grouped into top-level directories based on their type or purpose. The most common ones are apps/ and packages/ (sometimes libs/).
apps/: For deployable applications like web apps, mobile apps, or API services.packages/(orlibs/): For reusable libraries, components, or shared utilities that multiple apps might use.
This clear separation helps you understand a project's role at a glance.
Inside the `apps` Folder
Each folder within apps/ represents a distinct, standalone application. They usually have their own source code, configuration, and dependencies.
monorepo/
├── apps/
│ ├── web-app/ # Your frontend application
│ │ ├── src/
│ │ └── package.json
│ ├── api-service/ # Your backend API
│ │ ├── src/
│ │ └── Dockerfile
│ └── mobile-app/ # Your mobile application
│ ├── src/
│ └── ...
└── ...This structure keeps each application isolated while being part of the larger monorepo.
Inside `packages` (or `libs`)
The packages/ (or libs/) directory is where you put all your reusable code. These are often smaller, focused libraries or UI components that can be shared across multiple applications.
monorepo/
├── packages/
│ ├── ui-components/ # Reusable UI library
│ │ ├── src/
│ │ └── package.json
│ ├── shared-utils/ # Common utility functions
│ │ └── src/
│ └── auth-lib/ # Authentication logic
│ └── src/
└── ...This promotes code reuse and consistency across your projects.
Centralized Configuration
To ensure consistency, many monorepos centralize configuration files for tools like linters (for code style), formatters (for code layout), and build systems.
monorepo/
├── .eslintrc.js # Linter configuration
├── prettier.config.js # Code formatter configuration
├── jest.config.js # Test runner configuration
├── tsconfig.base.json # Base TypeScript config
└── ...These files often live at the root or in a dedicated config/ folder, applying rules consistently to all projects.
Benefits of Good Structure
A well-defined monorepo structure offers significant advantages:
- Discoverability: New team members can quickly understand where everything is.
- Consistency: Enforces uniform project layouts and coding standards effortlessly.
- Maintainability: Makes refactoring and managing dependencies much simpler.
- Tooling: Streamlines setup for monorepo-aware build and development tools.
It's an investment that pays off in the long run!
A Simple Program Example
While monorepo structure is about organizing files and folders, here's a basic Java program to demonstrate how runnable code appears in CoddyKit. This helps you get comfortable with the editor!
public class MonorepoConcept {
public static void main(String[] args) {
System.out.println("A well-structured monorepo is great!");
}
}Naming Conventions
Clear and consistent naming is crucial in a monorepo. It helps avoid confusion and makes the codebase more readable.
- Kebab-case: Use
kebab-casefor project and folder names (e.g.,web-app,shared-utils). - Specific names: Avoid generic names like
utils; be more specific (e.g.,date-utils,api-client). - Prefixes: For larger organizations, consider prefixing shared packages (e.g.,
@myorg/ui-components).
Monorepo Organization Check
Consider a monorepo containing a web application, an API service, and a shared UI component library. What are common and effective ways to organize these projects?
Recap: Structured Monorepos
Fantastic work! Today, we learned the importance of structuring a monorepo. We covered organizing applications into apps/, shared libraries into packages/ (or libs/), and centralizing global configurations.
A well-defined layout makes your monorepo easier to navigate, more consistent, and simpler to maintain. Next, we'll dive into specific tools that help manage these complex structures!
เรียนรู้ Git Advanced: Monorepo, Submodules & Workflows ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 48
คำถามที่พบบ่อย
บทเรียน “โครงสร้างและการจัดวาง Monorepo” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โครงสร้างและการจัดวาง Monorepo” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Git Advanced: Monorepo, Submodules & Workflows ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Git Advanced: Monorepo, Submodules & Workflows มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โครงสร้างและการจัดวาง Monorepo”
เรียนรู้แนวปฏิบัติที่ดีในการจัดระเบียบโครงการ แพ็กเกจ และโค้ดที่ใช้ร่วมกันภายในคลัง Git เดียว คุณปฏิบัติ Git Advanced: Monorepo, Submodules & Workflows ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Git Advanced: Monorepo, Submodules & Workflows หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Git Advanced: Monorepo, Submodules & Workflows บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “โครงสร้างและการจัดวาง Monorepo” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Git Advanced: Monorepo, Submodules & Workflows นี้ได้ไหม
ได้ บทเรียน Git Advanced: Monorepo, Submodules & Workflows ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Monorepo คืออะไร
- โครงสร้างและการจัดวาง Monorepo
- บทนำสู่เครื่องมือ Monorepo
- Monorepo เทียบกับ Polyrepo: การเลือกแนวทาง