JSDoc nedir? Nasıl kullanılır?

Yusuf Baş
4 min readNov 25, 2020

Ekip içerisinde ve ekipler arasında bilgi alışverişini ve iletişimi güçlendirmemizi sağlayan en etkili yöntemlerden biridir dokümantasyon oluşturmak. Yazılım geliştirirken en son yöneldiğimiz ve elemesi gereken bir şey olduğunda ilk elediğimiz şey muhtemelen dokümantasyonlardır. Eğer bir iletişim söz konusuysa gün sonunda dokümantasyonu çıkaranın daha fazla zaman kazancı olduğunu düşünmekteyim. Bize zor gelecek olan durumlar aslında işlerimizi kolaylaştırıyor. Hazırladığımız servislerin dokümantasyonu için Swagger gibi araçlar kullanmaktayız. Fakat projemde her bir fonksiyon ve sınıf için dokümantasyon çıkarabilmek için arayışa başladım. Amacım basit bir şekilde kurulumunu yapıp ve dokümanını statik olarak alabileceğim dokümantasyon aracıydı, oluşturduğum serverless fonksiyonlarının her biri için tanımlama yapabildiğim JSDoc ile karşılaştım.

JSDoc Nedir?

JavaScript dili için kullanılan bir doküman oluşturucudur. Bulunduğu klasördeki tüm kodu ve ya ayarlarda belirtilmiş yoldaki klasörlerin içindeki JavaScript uzantılı dosyaları analiz etmektedir. Dosyalarda belirtilen doküman tanımlamalarına göre statik HTML sayfası oluşturur. Bu HTML sayfası JavaScript dosyaları içerisindeki bütün tanımlamaları içerir.

JSDoc Kurulumu

JSDoc kurulabilmesi için Node ve Npm yüklü olması gerekmektedir. İlk olarak bilgisayarımıza global bir şekilde kurulumunu yapıyoruz.

npm install -g jsdoc

Ve uygulamanızın bulunduğu package.json dosyamıza eklemek için aşağıdaki komutu uygulayalım

npm install jsdoc --save-dev

JSDoc dokümantasyonu kaynak koddaki yorum satırlarındaki tanımlara göre oluşturmaktadır. Oluşturduğumuz fonksiyon, sınıf ve değişkenlerin üstüne yazdığımızda dokümantasyonunu oluşturmaya başlayabiliriz. Yorum satırı aşağıdaki örnek gibi olmalıdır

/** @function kullaniciOlustur*  @param {string} isim - Kullanıcı ismi*  @param {string} soyisim - Kullanıcı soyismi*  @param {number} yas - Kullanıcı yaşı*/

Yukarıda görüldüğü gibi yorum satırında /** ile başlatıyoruz ve bitirirken */ ile bitiririz. Arada olan her bir satır başlangıcına * eklememiz gerekir. JSDoc içerisinde bir çok etiket mevcuttur. Bu etiketleri kullanarak tanımlamalarımızı gerçekleştirebilmekteyiz. Daha fazla etiket detayını JSDoc sayfasında bulabilirsiniz.

Örnek göstermeden önce konfigürasyonları tanımlamak istiyorum. Bu konfigürasyon sayesinde çıktının nerede olacağı, hangi klasörde bu tanım araması gerçekleşeceğini, hangi tema kullanacağı gibi ayarları yapabileceğiz.

Kullandığım basit ayar dosyasını yukarıda görmektesiniz. Source objesi içersinde “include” alanı hangi klasör dahil olduğunu, “includePattern” hangi örüntüde bir dosya içereceğini ve “excludePattern” hangilerinin dahil olmayacağını göstermektedir.

Bunaltmadan opts objesine gelmek istiyorum. Burada “recurse” alanı true yaptığımızda klasör ve içerisindeki klasör ve dosyaları tek tek kontrol edip dokümanını oluşturmaktadır. “destination” Alanı statik dosyalarımızın çıkacağını alanı belirlemektedir. “readme” alanıysa doküman karşılama sayfasında gösterilmesini sağlayacağımız “readme.md” dosyasının alanı yazılmalıdır.

Ve ayarları yaptıktan sonra tek bir işlemimiz kaldı. package.json dosyasına script olarak komutumuzu tanımlayacağız. Script objesi içersinde aşağıdaki şekilde tanımlayabilirsiniz. “doc” yapmak zorunda değilsiniz istediğiniz komutu yazabilirsiniz.

"doc": "jsdoc -c jsdoc.config.json"

Ayarlarımızı tamamladık ve artık işe koyulabiliriz.

Yukarıdaki gibi basit bir şekilde fonksiyon oluşturduk. Bu fonksiyon tanımı için yorum satırlarında parametreleri belirttik. Bir fonksiyonumuzun olduğunu bu fonksiyonun 3 parametre aldığını ve bu parametrelerin tiplerini belirttik. Return parametresinde fonksiyonumuzun çıktısı nasıl olacağını, see parametresinde ise daha detaylı bilgi için link bıraktık. Terminalden aşağıdaki komutu çalıştırdığımızda aldığımız çıktıya birlikte bakalım

npm run doc
Dosya yapısı

Ayar dosyamızda çıktı oluşacağı belirtiğimiz yolda docs klasörümüz oluştu. Bu klasör içersinde fonts,scripts ve styles klasörleri bizim dokümantasyonumuzun gereçlerini göstermektedir.

index.html

Ayar dosyasında belirttiğimiz readme.md içerisindeki “Hello Everyone!” yazısı aktarıldığını gözlemlemekteyiz. Sağ tarafta ise bizim fonksiyonlarımızın listelendiği yerdir belli bir namespace ve module eklemediğimizden dolayı Global altında listelenmektedir.

global.html

Global sayfasına gittiğimizde tanımlamalarını yaptığımız fonksiyonu görmekteyiz ve fark ettiyseniz yukarıda yaptığımız tanımlamalar dokümantasyon haline geldi. Bu şekilde oluşturduğumuz fonksiyonların dokümanını çıkarabiliriz.

Tanımlamalar hakkında şimdilik daha fazla örnek vermeden “Template” eklemeye değinmek istiyorum. JSDoc Github sayfasında templates kısmı görülmektedir. Bu temalar topluluk tarafından geliştirilmektedir ve en popüler olanları eklenmiş. Hadi gelin temayı değiştirelim!

Template olarak better-docs kütüphanesini kullanmaya çalışalım. Öncelikle npm paketi olarak sunulan temanın kurulumunu yapalım.

npm install --save-dev better-docs

Komutunu uyguladıktan sonra JSDoc ayarlarını tuttuğumuz dosyada opts objesine aşağıdaki gibi ekleme yapalım

"template": "node_modules/better-docs"

ve tekrar dokümantasyonumuzda değişikliği gerçekleştirmek için komutumuzu çalıştırıyoruz

npm run doc
better-docs

Ta-ta-ta-tam! Temamızı çok kolay bir şekilde değiştirmiş olduk 💯

Görüldüğü kolay bir şekilde dokümantasyonumuzu çıkarmış olduk. Daha fazla bilgi için JSDoc sayfasını ziyaret edebilirsiniz.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Yusuf Baş
Yusuf Baş

No responses yet

Write a response