Nuvaka › Geliştirici belgeleri › CLI (nuvaka-ext)
CLI: nuvaka-ext
@nuvaka/extension-cli paketi uzantı oluşturur, denetler, paketler, imzalar ve yayınlar. Node.js 20+ ister. Ana sürümü desteklediği API sürümüdür (1.x = API v1).
npm i -D @nuvaka/extension-cli # ya da: npx nuvaka-ext …
npx nuvaka-ext --help
npx nuvaka-ext <komut> --help
Genel seçenekler: -h, --help, -v, --version, --json (makine okunur çıktı; CI için). Klasör alan komutlarda klasör konumsal argüman ya da --dir ile verilir; verilmezse geçerli klasör.
Komutlar
| Komut | Ne yapar |
|---|---|
init <ad> | yeni uzantı iskeleti |
lint [klasör|.nvx] | sunucuyla aynı kurallarla denetler |
pack [klasör] | <id>-<sürüm>.nvx paketini üretir |
keys create [ad] · keys list | Ed25519 imza anahtarı üretir / listeler |
sign <dosya.nvx> | paketi imzalar, base64 imzayı yazar |
login --token nvd_… | geliştirici token'ını kaydeder |
logout | kayıtlı token'ı siler |
whoami | token'ı doğrular, hesabı gösterir |
publish | paketler, imzalar, yükler |
dev [klasör] | geliştirme modu komutunu yazar, değişiklikte lint çalıştırır |
test [klasör] | uzantının testlerini (vitest) çalıştırır |
init
nuvaka-ext init <ad> [--dir <klasör>] [--username <kullanıcı>] [--ui] [--background] [--force]
<ad>: 2–40 karakter, küçük harf, rakam,-; ilk karakter harf ya da rakam. Kimlik<kullanıcı-adı>.<ad>olur.--dir: hedef klasör (varsayılan./<ad>).--force: boş olmayan klasöre yaz.--username: yayıncı kullanıcı adın; verilmezseloginbilgisinden alınır, o da yoksa sorulur.--ui/--background: şablon; ikisi de verilmezse ikisi birden.
npm create @nuvaka/extension <ad> -- [seçenekler] aynı komutu çalıştırır.
lint
nuvaka-ext lint [klasör|dosya.nvx] [--dir <klasör>] [--remote] [--key <ad>] [--api <adres>]
Manifest şeması, dosya türleri ve boyutları, yasak kalıplar, nuvaka.<ad> kullanımı ile izin uyumu. Hata varsa çıkış kodu 1. Kontrol listesi: Güvenlik kuralları.
--remote: paketi sunucuya gönderip yayınlamadan denetletir (token gerekir).--key:--remoteiçin imza anahtarı (hesabında anahtar kayıtlıysa gerekir).
$ nuvaka-ext lint examples/apps/github-watcher
tarikgkhsn.github-watcher 0.1.0 — 7 dosya, açılmış 16.1 KB, paket 8.1 KB
Tamam: 0 uyarı
pack
nuvaka-ext pack [klasör] [--dir <klasör>] [--out <dosya|klasör>]
Deterministik .nvx üretir (sıralı girişler, sabit zaman) ve SHA-256 ile boyutu yazar. Lint hatası varsa paket üretilmez. Pakete girmeyenler: .git, node_modules, test/tests/__tests__/__mocks__/coverage klasörleri, *.test.*/*.spec.*, nokta dosyaları, *.nvx, kökteki package.json, kilit dosyaları, tsconfig.json/jsconfig.json, vitest.config.*/vite.config.*.
keys ve sign
nuvaka-ext keys create [ad] [--force] # varsayılan ad: default
nuvaka-ext keys list
nuvaka-ext sign <dosya.nvx> [--key <ad|yol>]
Özel anahtar ~/.config/nuvaka/keys/<ad>.key dosyasına yalnız senin okuyabileceğin izinle (0600) yazılır; ilk anahtar varsayılan olur. Genel anahtarı uygulamada Profil › Geliştirici › Yayıncı imza anahtarları bölümünden hesabına ekle (bu işlem geliştirici token'ıyla yapılamaz, uygulama oturumu gerekir). sign paketin ham 32 baytlık SHA-256 özetini Ed25519 ile imzalar.
login, logout, whoami
nuvaka-ext login --token nvd_… [--api <adres>] [--username <ad>] [--no-verify]
nuvaka-ext logout
nuvaka-ext whoami [--api <adres>]
Token'ı uygulamada Profil › Geliştirici › Geliştirici token'ları'ndan üret; nvd_ ile başlar, bir kez gösterilir, 1 yıl geçerlidir, yalnız yayıncı uçlarında geçer ve istediğin an iptal edilebilir. login token'ı sunucuda doğrular ve ~/.config/nuvaka/credentials.json (0600) dosyasına kaydeder. --no-verify doğrulamadan kaydeder. whoami kullanıcı adını ve uzantılarını listeler.
publish
nuvaka-ext publish [klasör] [--dir <klasör>] [--changelog "…"] [--key <ad|yol>] [--no-sign] [--api <adres>]
Paketler (lint hatası varsa durur), anahtar varsa imzalar ve yükler. Sonuç:
published— yayında;review— incelemede (yayıncının ilk uzantısı, kritik izin isteyen sürüm ya da onaylı uzantının yeni sürümü);rejected— reddedildi; tarama bulguları yazılır, çıkış kodu 1.
Anahtar seçimi: --key › NUVAKA_KEY › varsayılan anahtar › tek anahtar. --changelog en çok 2000 karakter. --no-sign imzalamadan yükler (hesabında anahtar kayıtlıysa reddedilir). Paket en çok 20 MB.
dev
nuvaka-ext dev [klasör] [--dir <klasör>]
Klasörü izler ve her değişiklikte lint çalıştırır (Ctrl+C ile çıkılır). Uygulamayı kaynaktan çalıştıranlar için klasörü açılışta yükleyen komutu da yazar:
# generalappclient klasöründe (yalnız debug derleme yükler)
NUVAKA_EXT_DEV_DIR='/yol/merhaba' npm run tauri dev
# PowerShell
$env:NUVAKA_EXT_DEV_DIR="C:\yol\merhaba"; npm run tauri dev
Birden çok klasör işletim sisteminin yol ayırıcısıyla verilir (Linux/macOS :, Windows ;). Klasörler oturum açılışında yüklenir; değişiklikten sonra uygulamada yeniden yükle. Yayınlanmış uygulamada aynı işi Uygulamalar › Uygulamaları yönet › Klasörden yükle yapar (Profil sekmesinde geliştirici modu açıkken).
test
nuvaka-ext test [klasör] [--dir <klasör>] [-- vitest seçenekleri]
Uzantı klasöründe npx vitest run çalıştırır; -- sonrası vitest'e geçer. Testlerde @nuvaka/extension-sdk/testing içindeki sahte nuvaka kullanılır (SDK).
Ortam değişkenleri
| Değişken | Anlamı |
|---|---|
NUVAKA_TOKEN | geliştirici token'ı (CI); kayıtlı token'ın önüne geçer |
NUVAKA_API | API adresi (varsayılan https://generalappapi.nuvaka.com) |
NUVAKA_KEY | imza anahtarının adı ya da dosya yolu |
NUVAKA_CONFIG_DIR | ayar klasörü (varsayılan ~/.config/nuvaka) |
CI örneği
# Gizli değişkenler: NUVAKA_TOKEN (nvd_…) ve imza anahtarı dosyası
npm ci
npx nuvaka-ext lint
NUVAKA_KEY=./ci.key npx nuvaka-ext publish --json --changelog "$CHANGELOG"
Nuvaka Apps API v1 · son güncelleme 2026-09-27