Build Inkremental dan Cache dalam Monorepo
Optimalkan waktu build dengan kompilasi inkremental dan Turborepo.
Build Inkremental dan Cache dalam Monorepo adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.
Mengapa Pembangunan Inkremental Penting
Dalam repositori tunggal yang besar, membangun ulang setiap paket setiap kali terjadi perubahan itu lambat. Pembangunan inkremental mendeteksi perubahan dan hanya mengompilasi ulang paket yang terdampak.
# Without incremental: all 20 packages rebuild every time
# With incremental: only 2 changed packages rebuildMode Inkremental TypeScript
Aktifkan "incremental": true dalam tsconfig untuk menghasilkan berkas .tsbuildinfo yang menyimpan status pembangunan sebelumnya agar proses berikutnya berjalan cepat.
{
"compilerOptions": {
"incremental": true,
"tsBuildInfoFile": "./.tsbuildinfo"
}
}tsc --build untuk Referensi Proyek
tsc --build secara bawaan bersifat inkremental untuk ruang kerja dengan referensi proyek—perintah ini melacak cap waktu dan melewati paket yang sudah terbaru.
# First build: all packages compiled
tsc --build
# Second build: only changed packages compiled
tsc --build
# [12:00:01 PM] Project 'packages/core' is up to datePenyimpanan Hasil Turborepo
Turborepo menyimpan keluaran tugas (seperti dist/) dan memulihkannya dari penyimpanan saat masukan tidak berubah—di seluruh tim melalui penyimpanan jarak jauh.
// turbo.json
{
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".tsbuildinfo"]
}
}
}Penyimpanan Jarak Jauh dengan Turborepo
Bagikan penyimpanan pembangunan ke seluruh mesin integrasi berkelanjutan dan anggota tim agar tidak ada yang membangun ulang sesuatu yang sudah dibangun oleh orang lain.
# Link to Vercel remote cache
npx turbo login
npx turbo linkPenyimpanan Komputasi Nx
Nx menyediakan penyimpanan serupa dengan analisis terperinci tentang bagian yang terdampak berdasarkan graf dependensi proyek.
# Nx: only test affected projects
npx nx affected --target=test --base=mainMasukan dan Keluaran Penyimpanan
Agar penyimpanan berjalan benar, nyatakan semua masukan (berkas sumber, variabel lingkungan) dan keluaran (direktori dist, tsbuildinfo) dalam konfigurasi alat pembangunan Anda.
// turbo.json with inputs
{
"pipeline": {
"build": {
"inputs": ["src/**", "tsconfig.json"],
"outputs": ["dist/**"]
}
}
}Membatalkan Penyimpanan
Penyimpanan dibatalkan ketika masukan berubah. Hindari menyertakan berkas yang mudah berubah (seperti catatan atau cap waktu) sebagai masukan agar pembangunan ulang yang tidak perlu dapat dicegah.
# Force rebuild even if cached
turbo run build --forceIntegrasi CI
Hubungkan CI (GitHub Actions, CircleCI) ke penyimpanan jarak jauh agar pembangunan PR berjalan cepat dengan menggunakan kembali artefak pembangunan sebelumnya.
# .github/workflows/ci.yml
- name: Build
run: npx turbo build
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: my-teamHanya Pemeriksaan Tipe Inkremental
Gunakan tsc --noEmit --incremental untuk langkah CI yang hanya memeriksa tipe secara cepat; langkah ini melewati pembuatan keluaran, tetapi tetap memanfaatkan penyimpanan.
npx tsc --noEmit --incremental
# Quick type check with .tsbuildinfo cacheRingkasan: Pembangunan Inkremental
Pembangunan inkremental dalam repositori tunggal menggunakan tsBuildInfo TypeScript + tsc --build, yang dipadukan dengan penyimpanan Turborepo atau Nx untuk meminimalkan pekerjaan kompilasi pada setiap perubahan.
Pemeriksaan Singkat
Berkas apa yang dibuat TypeScript untuk mengaktifkan pembangunan inkremental?
Yang Anda Pelajari
Pembangunan inkremental menggunakan berkas .tsbuildinfo TypeScript dan tsc --build untuk melewati paket yang tidak berubah. Turborepo dan Nx memperluasnya dengan penyimpanan jarak jauh dan analisis hanya pada bagian yang terdampak di seluruh repositori tunggal.
Belajar TypeScript 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
- 101
- Pelajaran
- 352
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Build Inkremental dan Cache dalam Monorepo” gratis?
Ya — teks lengkap “Build Inkremental dan Cache dalam Monorepo” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Build Inkremental dan Cache dalam Monorepo”?
Optimalkan waktu build dengan kompilasi inkremental dan Turborepo. Kamu berlatih TypeScript Academy 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 TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript Academy 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 4 dari 4.
Berapa lama pelajaran “Build Inkremental dan Cache 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 TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy 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
- Penjelasan Referensi Proyek TypeScript
- Workspace pnpm dengan TypeScript
- Strategi Paket Tipe Bersama
- Build Inkremental dan Cache dalam Monorepo