Docs Contribution Guide
Next.js Docs Katkı Kılavuzuna hoş geldiniz! Burada olmanızdan dolayı heyecanlıyız.
Bu sayfada Next.js belgelerinin nasıl düzenleneceğine ilişkin talimatlar yer almaktadır. Amacımız, topluluktaki herkesin dokümanlarımıza katkıda bulunma ve dokümanlarımızı geliştirme yetkisine sahip olmasını sağlamaktır.
Why Contribute?
Açık kaynak çalışmaları asla bitmez, dokümantasyon da öyle. Belgelere katkıda bulunmak, yeni başlayanların açık kaynağa dahil olması ve deneyimli geliştiricilerin bilgilerini toplulukla paylaşırken daha karmaşık konulara açıklık getirmesi için iyi bir yoldur.
Next.js dokümanlarına katkıda bulunarak, tüm geliştiriciler için daha sağlam bir öğrenme kaynağı oluşturmamıza yardımcı oluyorsunuz. İster bir yazım hatası, ister kafa karıştırıcı bir bölüm bulmuş olun, ister belirli bir konunun eksik olduğunu fark etmiş olun, katkılarınız memnuniyetle karşılanır ve takdir edilir.
How to Contribute
Dokümanların içeriği Next.js reposunda bulunabilir: . Katkıda bulunmak için dosyaları doğrudan GitHub'da düzenleyebilir veya depoyu klonlayıp dosyaları yerel olarak düzenleyebilirsiniz.
GitHub Workflow
GitHub'da yeniyseniz, bir depoyu nasıl çatallayacağınızı, bir dal oluşturacağınızı ve bir çekme isteği göndereceğinizi öğrenmek için GitHub Açık Kaynak Kılavuzu 'nu okumanızı öneririz.
Bilmekte fayda var: Temel doküman kodu, Next.js genel deposuyla senkronize edilen özel bir kod tabanında bulunur. Bu, dokümanları yerel olarak önizleyemeyeceğiniz anlamına gelir. Ancak, bir çekme isteğini birleştirdikten sonra nextjs.org adresinde değişikliklerinizi göreceksiniz.
Writing MDX
Dokümanlar, JSX sözdizimini destekleyen bir markdown formatı olan MDX ile yazılmıştır. Bu, dokümanlara React bileşenleri yerleştirmemize olanak tanır. Markdown sözdizimine hızlı bir genel bakış için GitHub Markdown Kılavuzu 'na bakın.
VSCode
Previewing Changes Locally
VSCode, düzenlemelerinizi yerel olarak görmek için kullanabileceğiniz yerleşik bir markdown önizleyicisine sahiptir. MDX dosyaları için önizleyiciyi etkinleştirmek için kullanıcı ayarlarınıza bir yapılandırma seçeneği eklemeniz gerekir.
Komut paletini açın (Mac'te⌘ + ⇧ + P
veya Windows'ta Ctrl + Shift + P
) ve Preferences: Open User Settings (JSON)
adresinden arama yapın.
Ardından, settings.json
dosyanıza aşağıdaki satırı ekleyin:
{
"files.associations": {
"*.mdx": "markdown"
}
}
Ardından, komut paletini tekrar açın ve Markdown: Preview File
veya Markdown: Open Preview to the Side
adreslerini arayın. Bu, biçimlendirilmiş değişikliklerinizi görebileceğiniz bir önizleme penceresi açacaktır.
Extensions
VSCode kullanıcıları için aşağıdaki uzantıları da öneriyoruz:
- MDX: MDX için Intellisense ve sözdizimi vurgulama.
- Grammarly: Dilbilgisi ve yazım denetleyicisi.
- Daha güzel: MDX dosyalarını kaydetme sırasında biçimlendirin.
Review Process
Katkınızı gönderdikten sonra Next.js veya Geliştirici Deneyimi ekipleri değişikliklerinizi inceleyecek, geri bildirimde bulunacak ve hazır olduğunda çekme isteğini birleştirecektir.
Herhangi bir sorunuz varsa veya PR yorumlarınızda daha fazla yardıma ihtiyacınız olursa lütfen bize bildirin. Next.js dokümanlarına katkıda bulunduğunuz ve topluluğumuzun bir parçası olduğunuz için teşekkür ederiz!
İpucu: PR'ınızı göndermeden önce Daha Güzel çalıştırmak için
pnpm prettier-fix
adresini çalıştırın.
File Structure
Dokümanlar dosya sistemi yönlendirmesi kullanır. Her klasör ve içindeki dosyalar /docs
bir rota segmentini temsil eder. Bu segmentler URL yollarını, navigasyonu ve ekmek kırıntılarını oluşturmak için kullanılır.
Dosya yapısı sitede gördüğünüz navigasyonu yansıtır ve varsayılan olarak navigasyon öğeleri alfabetik olarak sıralanır. Ancak, klasör veya dosya adının önüne iki basamaklı bir sayı (00-
) ekleyerek öğelerin sırasını değiştirebiliriz.
Örneğin, işlevler API Referansında sayfalar alfabetik olarak sıralanmıştır çünkü bu, geliştiricilerin belirli bir işlevi bulmasını kolaylaştırır:
03-functions
├── cookies.mdx
├── draft-mode.mdx
├── fetch.mdx
└── ...
Ancak, yönlendirme bölümünde, dosyaların önüne iki basamaklı bir sayı eklenir ve geliştiricilerin bu kavramları öğrenmesi gereken sıraya göre sıralanır:
02-routing
├── 01-defining-routes.mdx
├── 02-pages-and-layouts.mdx
├── 03-linking-and-navigating.mdx
└── ...
Bir sayfayı hızlı bir şekilde bulmak için, VSCode'daki arama çubuğunu açmak üzere ⌘ + P
(Mac) veya Ctrl + P
(Windows) adresini kullanabilirsiniz. Ardından, aradığınız sayfanın slug'ını yazın. Örn. defining-routes
Neden bir manifesto kullanmıyorsunuz?
Bir manifesto dosyası kullanmayı düşündük (doküman navigasyonunu oluşturmanın bir başka popüler yolu), ancak bir manifestonun dosyalarla hızla senkronize olmayacağını gördük. Dosya sistemi yönlendirmesi bizi dokümanların yapısı hakkında düşünmeye zorluyor ve Next.js için daha doğal hissettiriyor.
Metadata
Her sayfada, dosyanın üst kısmında üç çizgi ile ayrılmış bir meta veri bloğu bulunur.
Required Fields
Aşağıdaki alanlar zorunludur:
Field | Description |
---|---|
title | The page's <h1> title, used for SEO and OG Images. |
description | The page's description, used in the <meta name="description"> tag for SEO. |
---
title: Page Title
description: Page Description
---
Sayfa başlığını 2-3 kelimeyle (örn. Görüntüleri Optimize Etmek) ve açıklamayı 1-2 cümleyle (örn. Next.js'de görüntüleri nasıl optimize edeceğinizi öğrenin) sınırlamak iyi bir uygulamadır.
Optional Fields
Aşağıdaki alanlar isteğe bağlıdır:
Field | Description |
---|---|
nav_title | Overrides the page's title in the navigation. This is useful when the page's title is too long to fit. If not provided, the title field is used. |
source | Pulls content into a shared page. See Shared Pages. |
related | A list of related pages at the bottom of the document. These will automatically be turned into cards. See Related Links. |
---
nav_title: Nav Item Title
source: app/building-your-application/optimizing/images
related:
description: See the image component API reference.
links:
- app/api-reference/components/image
---
App
and Pages
Docs
App Router ve Pages Router 'daki özelliklerin çoğu tamamen farklı olduğundan, her biri için dokümanlar ayrı bölümlerde tutulmaktadır (02-app
ve 03-pages
). Bununla birlikte, aralarında paylaşılan birkaç özellik vardır.
Shared Pages
İçeriğin yinelenmesini ve içeriğin senkronize olmaması riskini önlemek için, içeriği bir sayfadan diğerine çekmek için source
alanını kullanırız. Örneğin, <Link>
bileşeni Uygulama ve Sayfalarda çoğunlukla aynı şekilde davranır. İçeriği çoğaltmak yerine, içeriği app/.../link.mdx
adresinden pages/.../link.mdx
adresine çekebiliriz:
---
title: <Link>
description: API reference for the <Link> component.
---
This API reference will help you understand how to use the props
and configuration options available for the Link Component.
---
title: <Link>
description: API reference for the <Link> component.
source: app/api-reference/components/link
---
{/* DO NOT EDIT THIS PAGE. */}
{/* The content of this page is pulled from the source above. */}
Bu nedenle içeriği tek bir yerde düzenleyebilir ve her iki bölüme de yansıtabiliriz.
Shared Content
Paylaşılan sayfalarda, bazen App Rout er veya Pages Router 'a özgü içerik olabilir. Örneğin, <Link>
bileşeninin yalnızca Pages 'da kullanılabilen ancak App'da kullanılamayan bir shallow
prop'u vardır.
İçeriğin yalnızca doğru yönlendiricide gösterildiğinden emin olmak için, içerik bloklarını bir <AppOnly>
veya <PagesOnly>
bileşenlerine sarabiliriz:
This content is shared between App and Pages.
<PagesOnly>
This content will only be shown on the Pages docs.
</PagesOnly>
This content is shared between App and Pages.
Bu bileşenleri muhtemelen örnekler ve kod blokları için kullanacaksınız.
Code Blocks
Kod blokları kopyalanıp yapıştırılabilecek asgari bir çalışma örneği içermelidir. Bu, kodun herhangi bir ek yapılandırma olmadan çalışabilmesi gerektiği anlamına gelir.
Örneğin, <Link>
bileşeninin nasıl kullanılacağını gösteriyorsanız, import
deyimini ve <Link>
bileşeninin kendisini eklemelisiniz.
import Link from 'next/link'
export default function Page() {
return <Link href="/about">About</Link>
}
Örnekleri işlemeden önce her zaman yerel olarak çalıştırın. Bu, kodun güncel ve çalışır durumda olmasını sağlayacaktır.
Language and Filename
Kod blokları, dili ve filename
adresini içeren bir başlığa sahip olmalıdır. Kullanıcıların komutu nereye gireceklerini yönlendirmeye yardımcı olan özel bir Terminal simgesi oluşturmak için bir filename
prop ekleyin. Örneğin:
```bash filename="Terminal"
npx create-next-app
```
Dokümanlardaki örneklerin çoğu tsx
ve jsx
dillerinde ve birkaçı da bash
dilinde yazılmıştır. Ancak, desteklenen herhangi bir dili kullanabilirsiniz, işte tam liste.
JavaScript kod bloklarını yazarken aşağıdaki dil ve uzantı kombinasyonlarını kullanırız.
Language | Extension | |
---|---|---|
JavaScript files with JSX code | ```jsx | .js |
JavaScript files without JSX | ```js | .js |
TypeScript files with JSX | ```tsx | .tsx |
TypeScript files without JSX | ```ts | .ts |
TS and JS Switcher
TypeScript ve JavaScript arasında geçiş yapmak için bir dil değiştirici ekleyin. Kod blokları önce TypeScript olmalı ve kullanıcılara uyum sağlamak için bir JavaScript sürümü bulunmalıdır.
Şu anda TS ve JS örneklerini birbiri ardına yazıyoruz ve bunları switcher
prop ile ilişkilendiriyoruz:
```tsx filename="app/page.tsx" switcher
```
```jsx filename="app/page.js" switcher
```
Bilmekte fayda var: Gelecekte TypeScript parçacıklarını otomatik olarak JavaScript'e derlemeyi planlıyoruz. Bu arada, transform.tools adresini kullanabilirsiniz.
Line Highlighting
Kod satırları vurgulanabilir. Bu, kodun belirli bir bölümüne dikkat çekmek istediğinizde kullanışlıdır. highlight
prop'una bir sayı girerek satırları vurgulayabilirsiniz.
Tek hat: highlight={1}
import Link from 'next/link'
export default function Page() {
return <Link href="/about">About</Link>
}
Çoklu Hatlar: highlight={1,3}
import Link from 'next/link'
export default function Page() {
return <Link href="/about">About</Link>
}
Hat Aralığı: highlight={1-5}
import Link from 'next/link'
export default function Page() {
return <Link href="/about">About</Link>
}
Icons
Aşağıdaki simgeler dokümanlarda kullanılmak üzere mevcuttur:
<Check size={18} />
<Cross size={18} />
Çıktı:
Dokümanlarda emoji kullanmıyoruz.
Notes
Önemli ancak kritik olmayan bilgiler için notları kullanın. Notlar, kullanıcının dikkatini ana içerikten uzaklaştırmadan bilgi eklemenin iyi bir yoludur.
> **Good to know**: This is a single line note.
> **Good to know**:
>
> - We also use this format for multi-line notes.
> - There are sometimes multiple items worth knowing or keeping in mind.
Çıktı:
Bilmekte fayda var: Bu tek satırlık bir nottur.
Bildiğim iyi oldu:
- Bu formatı çok satırlı notlar için de kullanırız.
- Bazen bilinmesi veya akılda tutulması gereken birden fazla öğe vardır.
Related Links
İlgili Bağlantılar, mantıksal sonraki adımlara bağlantılar ekleyerek kullanıcının öğrenme yolculuğuna rehberlik eder.
- Bağlantılar, sayfanın ana içeriğinin altında kartlar halinde görüntülenecektir.
- Bağlantılar, alt sayfaları olan sayfalar için otomatik olarak oluşturulacaktır. Örneğin, Optimizasyon bölümünün tüm alt sayfalarına bağlantılar vardır.
Sayfanın meta verilerindeki related
alanını kullanarak ilgili bağlantıları oluşturun.
---
related:
description: Learn how to quickly get started with your first application.
links:
- app/building-your-application/routing/defining-routes
- app/building-your-application/data-fetching
- app/api-reference/file-conventions/page
---
Nested Fields
Field | Required? | Description |
---|---|---|
title | Optional | The title of the card list. Defaults to Next Steps. |
description | Optional | The description of the card list. |
links | Required | A list of links to other doc pages. Each list item should be a relative URL path (without a leading slash) e.g. app/api-reference/file-conventions/page |
Diagrams
Diyagramlar karmaşık kavramları açıklamak için harika bir yoldur. Vercel'in tasarım kılavuzunu izleyerek diyagramlar oluşturmak için Figma kullanıyoruz.
Diyagramlar şu anda özel Next.js sitemizdeki bir /public
klasöründe yer almaktadır. Bir diyagramı güncellemek veya eklemek isterseniz, lütfen fikirlerinizle birlikte bir GitHub sorunu açın.
Custom Components and HTML
Dokümanlar için kullanılabilen React Bileşenleri şunlardır: <Image />
(next/image), <PagesOnly />
, <AppOnly />
, <Cross />
ve <Check />
. Dokümanlarda <details>
etiketi dışında ham HTML'ye izin vermiyoruz.
Yeni bileşenler için fikirleriniz varsa, lütfen bir GitHub sorunu açın .
Style Guide
Bu bölüm, teknik yazarlığa yeni başlayanlar için doküman yazmaya yönelik yönergeler içerir.
Page Templates
Sayfalar için katı bir şablonumuz olmasa da, dokümanlarda tekrarlandığını göreceğiniz sayfa bölümleri vardır:
- Genel Bakış: Bir sayfanın ilk paragrafı kullanıcıya özelliğin ne olduğunu ve ne için kullanıldığını anlatmalıdır. Bunu asgari bir çalışma örneği veya API referansı izlemelidir.
- Kurallar: Özelliğin bir kuralı varsa, burada açıklanmalıdır.
- Örnekler: Özelliğin farklı kullanım durumlarında nasıl kullanılabileceğini gösterin.
- API Tabloları: API Sayfaları, sayfanın başında bölümlere atlama bağlantıları (mümkün olduğunda) içeren bir genel bakış tablosuna sahip olmalıdır.
- Sonraki Adımlar (İlgili Bağlantılar): Kullanıcının öğrenme yolculuğuna rehberlik etmek için ilgili sayfalara bağlantılar ekleyin.
Gerektiğinde bu bölümleri eklemekten çekinmeyin.
Page Types
Doküman sayfaları da iki kategoriye ayrılmıştır: Kavramsal ve Referans.
- Kavramsal sayfalar bir kavramı veya özelliği açıklamak için kullanılır. Genellikle daha uzundurlar ve referans sayfalarından daha fazla bilgi içerirler. Next.js dokümanlarında, kavramsal sayfalar Building Your Application bölümünde bulunur.
- Referans sayfaları belirli bir API'yi açıklamak için kullanılır. Genellikle daha kısa ve daha odaklıdırlar. Next.js dokümanlarında, referans sayfaları API Refer ansı bölümünde bulunur.
Bilmekte fayda var: Katkıda bulunduğunuz sayfaya bağlı olarak, farklı bir ses ve stil izlemeniz gerekebilir. Örneğin, kavramsal sayfalar daha öğreticidir ve kullanıcıya hitap etmek için siz kelimesini kullanır. Referans sayfaları daha tekniktir, "oluştur, güncelle, kabul et" gibi daha zorunlu kelimeler kullanırlar ve siz kelimesini atlama eğilimindedirler.
Voice
Belgeler arasında tutarlı bir stil ve ses sağlamak için bazı yönergeler aşağıda verilmiştir:
- Açık, özlü cümleler yazın. Teğetlerden kaçının.
- Kendinizi çok fazla virgül kullanırken bulursanız, cümleyi birden fazla cümleye bölmeyi veya bir liste kullanmayı düşünün.
- Karmaşık sözcükleri daha basit olanlarla değiştirin. Örneğin, utilize yerine use kullanın.
- Bu kelimesi konusunda dikkatli olun. Belirsiz ve kafa karıştırıcı olabilir, net değilse cümlenin öznesini tekrarlamaktan çekinmeyin.
- Örneğin, Next.js bunu kullanır yerine Next.js React 'i kullanır.
- Pasif yerine aktif bir ses kullanın. Aktif bir cümlenin okunması daha kolaydır.
- Örneğin, React is used by Next.js yerine Next.js uses Re act. Kendinizi was ve by gibi kelimeler kullanırken bulursanız, edilgen bir ses kullanıyor olabilirsiniz.
- Kolay, hızlı, basit, sadece gibi kelimeleri kullanmaktan kaçının. Bu özneldir ve kullanıcıların cesaretini kırabilir.
- Don't, can't, won't, vb. gibi olumsuz kelimelerden kaçının. Bu okuyucular için cesaret kırıcı olabilir.
- Örneğin, "Sayfalar arasında bağlantı oluşturmak için
<a>
etiketini kullanmayın" yerine " Sayfalar arasında bağlantı oluşturmak içinLink
bileşenini kullanabilirsiniz".
- Örneğin, "Sayfalar arasında bağlantı oluşturmak için
- İkinci şahıs ağzından yazın (siz/siz). Bu daha kişisel ve ilgi çekicidir.
- Cinsiyet ayrımı gözetmeyen bir dil kullanın. Hedef kitleden bahsederken geliştiriciler, kullanıcılar veya okuyucular ifadesini kullanın.
- Kod örnekleri ekliyorsanız, düzgün biçimlendirildiklerinden ve çalıştıklarından emin olun.
Bu yönergeler kapsamlı olmamakla birlikte, başlamanıza yardımcı olacaktır. Teknik yazarlık konusunda daha derinlere inmek isterseniz Google Teknik Yazarlık Kursu'na göz atın: .
Belgelere katkıda bulunduğunuz ve Next.js topluluğunun bir parçası olduğunuz için teşekkür ederiz!