Pengelolaan Dependensi dalam Monorepo
Jelajahi teknik untuk mengelola dependensi internal dan eksternal di berbagai proyek dalam sebuah monorepo.
Pengelolaan Dependensi dalam Monorepo adalah pelajaran Git Advanced: Monorepo, Submodules & Workflows gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Git Advanced: Monorepo, Submodules & Workflows, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Git Advanced: Monorepo, Submodules & Workflows mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Monorepo Dependencies Explained
Welcome to dependency management in monorepos! In a monorepo, many projects live together in one Git repository.
This setup brings unique challenges and benefits for how these projects share and rely on code.
- Internal Dependencies: When one project in the monorepo uses code from another project in the same monorepo.
- External Dependencies: When projects use third-party libraries or frameworks (like React or Lodash).
Internal Dependencies: Code Sharing
One of the biggest advantages of a monorepo is easy code sharing. Imagine you have a shared UI component library and several applications using it.
Instead of publishing and consuming it as a separate package, you can reference it directly within the monorepo.
This simplifies development, testing, and ensures consistency across your applications.
External Dependencies: Third-Party Libraries
Just like any project, those in a monorepo often rely on external, open-source libraries. Think of popular tools like Node.js packages (e.g., Express, Axios) or Java libraries (e.g., Spring Boot, Guava).
Managing these can be tricky. Different projects might need different versions of the same external library, or you might want to enforce a single version across all projects for consistency.
Package Managers & Workspaces
For languages like JavaScript, package managers such as npm, Yarn, or pnpm are essential. They typically introduce a concept called workspaces.
Workspaces allow you to manage multiple packages within a single root package.json. This enables:
- Centralized dependency installation.
- Cross-referencing internal packages easily.
- Optimized disk space usage.
Workspace Hoisting Explained
A key feature of monorepo package managers is hoisting. Instead of installing the same external dependency multiple times in each project's node_modules folder, it's 'hoisted' to the root node_modules.
This means:
- Less disk space used.
- Faster installation times.
- Ensures all projects use the same version of a hoisted dependency, reducing potential conflicts.
Setting Up npm Workspaces
Let's see how to configure npm workspaces. You define them in the root package.json file.
Here, we tell npm to look for packages in the packages/* directory. Each sub-directory will contain its own package.json.
{
"name": "my-monorepo",
"version": "1.0.0",
"private": true,
"workspaces": [
"packages/*"
],
"scripts": {
"install:all": "npm install"
}
}Using Internal & External Dependencies
Now, let's create a simple ui-lib and an app project inside our packages/ folder. The app will depend on ui-lib and an external library, lodash.
Notice how ui-lib is referenced by its package name in app/package.json.
/* packages/ui-lib/package.json */
{
"name": "ui-lib",
"version": "1.0.0",
"main": "index.js"
}
/* packages/ui-lib/index.js */
export const Button = () => 'Monorepo Button';
/* packages/app/package.json */
{
"name": "app",
"version": "1.0.0",
"dependencies": {
"ui-lib": "*",
"lodash": "^4.17.21"
}
}
/* packages/app/index.js */
import { Button } from 'ui-lib';
import { capitalize } from 'lodash';
console.log(capitalize(Button()));
// Run 'npm install' from root, then 'node packages/app/index.js'Managing Version Conflicts
What if one project needs lodash@3.x and another needs lodash@4.x?
Monorepo tools often try to hoist a single version. If different versions are specified, some package managers might install multiple versions or require explicit overrides.
Best practice: Aim for a single, consistent version of major external dependencies across the entire monorepo to avoid complex resolution issues and ensure compatibility.
Dependency Graph & Tools
As monorepos grow, understanding the relationships between projects becomes crucial. A dependency graph visually maps out which projects depend on which.
Tools like Nx, Lerna, and Turborepo generate these graphs, helping you:
- Identify critical paths.
- Understand the impact of changes.
- Optimize build processes by only rebuilding affected projects.
Quick Check: Monorepo Dependencies
Consider a monorepo using npm workspaces with multiple projects. Which of the following statements about dependency management are true?
Recap: Monorepo Dependency Mastery
You've learned the essentials of dependency management in monorepos!
- Internal dependencies foster code sharing and consistency.
- External dependencies are managed efficiently using workspace features.
- Workspaces and hoisting optimize installation, disk space, and version consistency.
- Understanding the dependency graph is key for large monorepos.
Mastering these techniques is vital for building scalable and maintainable monorepo projects.
Belajar Git Advanced: Monorepo, Submodules & Workflows dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengelolaan Dependensi dalam Monorepo” gratis?
Ya — teks lengkap “Pengelolaan Dependensi dalam Monorepo” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Git Advanced: Monorepo, Submodules & Workflows, upgrade ke CoddyKit PRO. Kursus Git Advanced: Monorepo, Submodules & Workflows mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengelolaan Dependensi dalam Monorepo”?
Jelajahi teknik untuk mengelola dependensi internal dan eksternal di berbagai proyek dalam sebuah monorepo. Kamu berlatih Git Advanced: Monorepo, Submodules & Workflows dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Git Advanced: Monorepo, Submodules & Workflows?
Tidak diperlukan pengalaman sebelumnya. Git Advanced: Monorepo, Submodules & Workflows di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Pengelolaan Dependensi dalam Monorepo” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Git Advanced: Monorepo, Submodules & Workflows ini?
Ya. Setiap pelajaran Git Advanced: Monorepo, Submodules & Workflows menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pengelolaan Dependensi dalam Monorepo
- Komit Atomik dan Perubahan Lintas Proyek
- Strategi CI/CD Monorepo
- Caching Build dan Build Hanya untuk Proyek Terdampak