0Pricing
Lua Academy · Ders

Eklenti Paketleme

Yapılandırıp paylaşın.

Eklenti Paketleme, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

Eklenti Dizini Düzeni

Neovim eklentisi, runtimepath üzerinde bulunan bir dizinden ibarettir. Geleneksel düzende, Neovim'in özel olarak ele aldığı üst düzey klasörler bulunur.

Önemli dizinler şunlardır: modüller için lua/, otomatik yüklenen kurulum için plugin/, dosya türü betikleri için ftplugin/, yardım için doc/ ve geç aşamadaki geçersiz kılmalar için after/.

-- myplugin/
--   lua/myplugin/init.lua
--   plugin/myplugin.lua
--   doc/myplugin.txt

lua/ Dizini

lua/ altındaki dosyalara require ile erişilebilir. lua/myplugin/init.lua konumundaki bir modül, require('myplugin') olarak yüklenir.

İç içe klasörler noktalı yollara karşılık gelir: lua/myplugin/config.lua, require('myplugin.config') hâline gelir. Eklentiler, temiz bir genel ad alanını bu şekilde sunar.

-- in lua/myplugin/init.lua
local M = {}
function M.hello() print('hi') end
return M

Modül Tablosu Döndürme

Yerleşik modül düzeninde yerel bir M tablosu tanımlanır, işlevler buna eklenir ve tablo döndürülür. Çağıran kod daha sonra require('myplugin').hello() erişimini kullanır.

Dahili yardımcıları sıradan yerel değişkenler olarak tutun; böylece yalnızca amaçlanan arayüz genel kullanıma açık olur. Bu yaklaşım, diğer ekosistemlerdeki modül kapsüllemesini yansıtır.

local M = {}
local function private() end
function M.run() private() end
return M

setup() Kuralı

Çoğu eklenti bir setup(opts) işlevi sunar. Bu işlev, kullanıcı seçeneklerini varsayılanların üzerine birleştirir ve komutlarla otomatik komutlar oluşturmak gibi başlatma işlemlerini gerçekleştirir.

Kısmi kullanıcı yapılandırmasının bile tüm varsayılanları alması için vim.tbl_deep_extend('force', defaults, opts or {}) kullanın.

local M = {}
local defaults = { width = 40 }
function M.setup(opts)
  M.config = vim.tbl_deep_extend('force', defaults, opts or {})
end
return M

plugin/ Dizini

plugin/ içindeki betikler, Neovim başlatıldığında ve runtimepath oluşturulduktan sonra otomatik olarak çalışır. Bunları küçük tutun.

Yaygın bir görev, komutları veya ağır modüllerin geç yüklenmesini sağlayan bir korumayı kaydetmektir. Başlangıçta pahalı işlemler yapmaktan kaçının; Neovim'in hızlı açılması için bunları setup işlevine veya otomatik komutlara erteleyin.

-- in plugin/myplugin.lua
if vim.g.loaded_myplugin then return end
vim.g.loaded_myplugin = true

Yükleme Korumaları

Yükleme koruması, dosya iki kez kaynak olarak yüklendiğinde başlatmanın tekrarlanmasını önler. Bir vim.g.loaded_* bayrağı ayarlayın ve yeniden girişte işlemi erkenden sonlandırın.

Bu önemlidir; çünkü eklenti yöneticileri ve :runtime dosyaları yeniden kaynak olarak yükleyebilir. Yinelenen komutlar veya otomatik komutlar da fark edilmesi zor hatalara yol açar.

if vim.g.loaded_myplugin == 1 then return end
vim.g.loaded_myplugin = 1

Geç Yükleme

Hızlı başlangıç, kodun yalnızca gerektiğinde yüklenmesi anlamına gelir. plugin/ içinde, ilk kullanımda ağır modülü yükleyen hafif bir komut kaydedin.

lazy.nvim gibi eklenti yöneticileri bunu cmd, ft ve keys tetikleyicileriyle düzenler; böylece modülünüz çağrılana kadar yüklenmez.

vim.api.nvim_create_user_command('MyStart', function()
  require('myplugin').run()
end, {})

Çalışma Yolu ve Paket Yolu

Neovim, eklentileri runtimepath'i tarayarak keşfeder. Yerel paket sistemi, pack/*/start/ altındaki dizinleri otomatik olarak, pack/*/opt/ altındakileri ise :packadd aracılığıyla gerektiğinde yükler.

Çoğu kullanıcı bir yöneticiye güvenir; ancak runtimepath'i anlamak, klasörlerinizin nasıl bulunduğunu açıklar.

print(vim.o.runtimepath:sub(1, 60))
-- :packadd loads an opt plugin manually

Sağlık Denetimleri

Kullanıcıların :checkhealth myplugin komutunu çalıştırabilmesi için lua/myplugin/health.lua dosyasını ve içinde bir check işlevini sağlayın. Durumu vim.health arayüzüyle bildirin.

Eksik bağımlılıkları açıkça göstermek için vim.health.start, vim.health.ok, vim.health.warn ve vim.health.error kullanın.

local M = {}
function M.check()
  vim.health.start('myplugin')
  vim.health.ok('all good')
end
return M

Belgelendirme ve Etiketler

Bir doc/myplugin.txt yardım dosyası sağlayın. :helptags doc/ komutunu çalıştırın veya bunu yöneticinin yapmasına izin verin; böylece :help myplugin komutunun çalışmasını sağlayan etiket dizini oluşturulur.

İyi belgeler, komutları, setup seçeneklerini ve varsayılan tuş eşlemelerini listeler. Böylece eklentiniz Neovim içinden keşfedilebilir.

-- generate tags from the doc directory
vim.cmd('helptags ' .. vim.fn.expand('%:p:h'))

Sürümleme ve Yayımlama

Eklentiyi bir Git deposunda barındırın; kullanıcılar onu owner/repo yolu üzerinden yükler. Yöneticilerin sürümleri sabitleyebilmesi için sürümleri anlamsal sürümleme kurallarına göre etiketleyin.

Başlama eşiğini düşürmek için popüler yöneticilere yönelik kurulum örnekleri içeren bir README, bir lisans ve en az bir yapılandırma örneği ekleyin.

-- lazy.nvim spec
-- { 'owner/myplugin', config = function()
--     require('myplugin').setup({})
--   end }

Hızlı Kontrol

Eklenti paketleme konusundaki anlayışınızı doğrulayın.

Özet: Eklenti Paketleme

Bir eklenti; lua/ modülleri, otomatik çalışan bir plugin/ betiği ve isteğe bağlı doc/, ftplugin/ ile sağlık dosyalarını içeren bir runtimepath dizinidir.

Modül tabloları döndürün, varsayılanları birleştiren bir setup işlevi sunun, iki kez yüklemeye karşı koruma ekleyin, ağır kodları geç yükleyin, helptags ile belgelendirin ve anlamsal sürüm etiketleri kullanarak Git üzerinden yayımlayın.

Sıkça Sorulan Sorular

“Eklenti Paketleme” dersi ücretsiz mi?

Evet — “Eklenti Paketleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“Eklenti Paketleme” dersinde ne öğreneceğim?

Yapılandırıp paylaşın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Eklenti Paketleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Neovim Lua API'si
  2. Komutlar ve Tuş Eşlemeleri
  3. Tamponlar ve Pencereler
  4. Eklenti Paketleme
← Lua Academy Sayfasına Dön