Eklentinizi yayımlama
Eklentiler düz klasörler olarak dağıtılır. Yayımlamak, insanlara düzenleyiciden kurabilecekleri bir klasör (genellikle bir zip) vermek demektir.
Kontrol listesi
- Manifest.
idbenzersiz ve sabittir,versionanlamsal sürümlemeyi izler,minMacroGridkullandığınız özelliklere sahip en eski Macro Grid'dir (derlediğiniz SDK sürümü ya da daha eskisi). - İzinler (JavaScript). Yalnızca kullandığınız izinleri isteyin; bkz. İzinler. Daha fazla izin isteyen bir güncelleme, kullanıcının yeniden onayını bekler.
- Bir README: eklentinin ne yaptığını, gereksinimlerini, ayarlarını ve verileri nerede sakladığını anlatır. Bir sırrı düz metin olarak saklıyorsa bunu belirtin.
- Bir lisans. Bir
LICENSEdosyası ekleyin; üçüncü taraf kod veya varlık içeriyorsa birNOTICE.mdde ekleyin. Her varlığın (simge, yazı tipi) nereden geldiğini ve yeniden dağıtma hakkınız olduğunu belirtin. - Bir değişiklik günlüğü. Bu depodaki eklentilerde olduğu gibi, kısa bir herkese açık ve ayrıntılı bir teknik günlük tutun.
- Temiz bir durumdan test edin: eklentiyi kaldırın, dağıtacağınız klasörden kurun ve kendi README'nizi izleyin.
Neler dağıtılır
plugin.json, betik ve LICENSE dosyalarını içeren klasör. Eklentiniz bir JavaScript eklentisi olmalıdır: sunucu başka bir yazarın C# eklentisini yüklemez.
Klasörün içeriğini zipleyin. Kullanıcılar ya %AppData%\MacroGrid\plugins\<id>\ içine açar ya da açılmış klasör üzerinde Eklentiler, Eklentileri Yönet…, Klasörden Yükle… yolunu kullanır.
Bu depodaki sürümler
Bu depodaki resmî eklentileri bakımcı, main üzerindeki bir etiketten (plugin-<name>-v<version>, örneğin plugin-obs-v0.2.0) kendi bilgisayarındaki bir betikle derler, imzalar ve yayımlar: imza anahtarı o bilgisayardan hiç çıkmaz. Sürüm zip'i kendi dosyaları üzerinde bir imza taşır; sunucu bir C# eklentisi her yüklendiğinde bunu denetler. Proje dışından gelen çekme istekleri (pull request) genel olarak kabul edilmez, çünkü resmî eklentiler tam güvenle çalışır; önce bir issue açın. Kendi eklentiniz kendi deponuza, bir JavaScript eklentisi olarak aittir ve insanlar onu oradan kurar (aşağıya bakın).
Kendi kaynağınızı çalıştırma
Sunucu, kullanıcının eklediği herhangi bir genel GitHub deposundan da bir JavaScript eklentisi kurabilir, yalnızca bu depo değil — ama açık bir üçüncü taraf uyarısıyla, çünkü yalnızca bu deponun sürümleri resmî anahtarla imzalanır. C# eklentisi sunan bir depo reddedilir: sunucu C# eklentisini yalnızca resmî kaynaktan kurar. İki biçim desteklenir:
- Çok eklentili bir depo, Keşfet sekmesinde kaynak olarak eklenir: deponuzun kökünde,
mainüzerinde, yalnızca kendi sürümlerinize işaret eden birmacrogrid-index.jsontutun. Bu deponunexamples/third-party-release.ymlvescripts/update-plugin-index.ps1dosyalarını başlangıç noktası olarak kopyalayın ve imzalama adımını çıkarın (resmî bir anahtarınız yok, ve kendiniz eklediğiniz bir imzaya zaten güvenilmez). Yalnızca"kind": "js"eklentileri listeleyin. - Tek eklentili bir depo, URL'si yapıştırılarak kurulur: kökte, her zaman en son sürümle eşleşen bir
plugin.jsontutun;v<version>etiketiyle, bir<id>-<version>.zipve bir<id>-<version>.zip.sha256varlığıyla.
Kökte plugin.json yerine macrogrid-index.json bulunması, sunucuya "bu çok eklentili bir depo" olduğunu söyler — tam şema için bkz. Kaynak dizini.
Mağaza
Mağaza, bu deponun resmî eklentilerini listeler ve kendini depodan ve GitHub sürümlerinden oluşturur. Bir eklentinin oraya nasıl girdiği şöyledir (bu depoya yalnızca bakımcı eklenti ekler; bkz. Depo kuralları):
- Klasörü ekleyin: depo kökünde (örneğin
MyPlugin/)plugin.json, birREADME.md(ilk bölümü "Ne yapar" olur, ilk paragrafı kart metni olur), birCHANGELOG.mdve yukarıda anlatıldığı gibi lisans dosyaları bulunsun. - İsterseniz
website/store/catalog.jsondosyasına bir satır ekleyin:{ "id": "my-plugin", "dir": "MyPlugin", "category": "Integrations", "icon": "code" }. Mağaza,plugin.jsoniçeren her kök klasörü bu satır olmadan da listeler (kategori "Diğer", ikon yok); satır yalnızca kartın görünümünü belirler.id,plugin.jsoniçindekiidile aynı olmalıdır.icon,website/public/store/icons/içindeki bir SVG'nin adıdır; yoksa kart bir harf gösterir. En başa sıralamak için"featured": trueekleyin. - Bir sürüm etiketleyin:
plugin-<id>-vX.Y.Z(örneğinplugin-my-plugin-v0.1.0), Sürümler bölümünde anlatıldığı gibi. Sürüm yayımlandığında Mağaza, zip dosyasını indirme düğmesi olarak gösterir. Site, bir sürüm yayımlandığında, düzenlendiğinde veya silindiğinde yeniden oluşturulur.
Taslak sürümler asla gösterilmez. Bir eklentinin yayımlanmış sürümü olana kadar kartı GitHub Releases sayfasına bağlanır.
Kullanıcılar için güvenlik notları
Kullanıcılarınıza eklentinizin neler yapabildiğini söyleyin. Bir JavaScript eklentisi sandbox içinde çalışır ve çalışmadan önce izin listesini gösterir; Macro Grid başka yazarların eklentilerini incelemez, bu yüzden her izinle ne yaptığınızı, özellikle input ve http için, açıkça yazın.
