Tema
Proje yapısı ve build
Klasörler
text
my-app/
├─ manifest.json app kimliği, sürüm, parametreler, izinler
├─ package.json dev / build / validate / publish / test script'leri
├─ index.html Vite girişi
├─ src/
│ ├─ main.ts Corevo.ready() → Vue mount
│ ├─ App.vue ekran
│ └─ corevo.ts params, dil ve görünürlüğü reaktif yapan küçük yardımcı
├─ tests/App.test.ts vitest + @corevo-ds/app-sdk/testing
├─ dev/
│ ├─ params.json dev kabuğunun başlangıç parametreleri
│ ├─ files/ media ve file parametrelerinin örnek dosyaları
│ └─ data/ dataset ve veri kaynağı örnekleri (ör. weather.json)
├─ legacy/app.js ES5 ekran (yalnız --legacy)
├─ vite.config.ts tek dosya, IIFE, chrome56 ayarları
└─ corevo.config.json opsiyonel: devUrl, outDir, targets, panelUrlScript'ler
| Komut | Ne yapar |
|---|---|
npm run dev | Vite + corevo dev |
npm run build | vue-tsc → vite build → (legacy) → corevo build |
npm run validate | corevo validate --built: build denetimi, zip yazmaz |
npm test | vitest |
npm run publish | corevo publish |
Hedefler (targets)
| Hedef | Cihazlar | Kural |
|---|---|---|
modern (zorunlu) | Chromium 56+ (Tizen 4.0 ve üzeri dahil) | ES2017 script, type="module" yok |
legacy (opsiyonel) | Chromium 32+ (SSSP 2/3, webOS 1–2) | ES5 |
admin (opsiyonel) | Panel içindeki özel yönetim sayfası | ES2017 |
Modern hedefin en eski cihazı Chromium 56'dır. Bu sürüm <script type="module"> ve ?. gibi ES2018+ sözdizimini çalıştırmaz. App zip içinden açıldığı için harici dosya isteyemez. Şablondaki vite.config.ts bu yüzden:
format: 'iife'ile tek klasik script üretir,vite-plugin-singlefileile JS ve CSS'iindex.htmliçine gömer,- son parçayı esbuild ile
chrome56hedefine indirir, base: './'ile göreli yol kullanır.
corevo build
Projenin kendi derlemesini çalıştırmaz; dist/ altındaki hazır çıktıyı denetler ve paketler.
- Her hedefin
entrydosyası var olmalı. - İzinli uzantılar: html, css, js, mjs, json, png, jpg, jpeg, gif, webp, svg, ico, woff, woff2, ttf, otf, mp4, webm, mp3, txt, csv, xlsx.
- Sembolik link,
.ile başlayan ad,..içeren yol yasak. http:///https://ile yüklenen script, stil, font veya import hata verir. App ağa çıkamaz; her şey paketin içinde olmalı.modernveadminscript'leri ES2017,legacyscript'leri ES5 olarak ayrıştırılır.- Kurulu
@corevo-ds/app-sdksürümümanifest.sdk_versionaralığını karşılamalı. - Boyut sınırları: Sınırlar.
Çıktı .corevo/out/ altındadır: manifest.json, hedef dosyaları, corevo.files.json (her dosyanın sha256 ve boyutu) ve <key>-<version>.zip. Zip içeriği sıralı ve zaman damgası sabittir; aynı girdi aynı sha256'yı üretir.
Test
@corevo-ds/app-sdk/testing bir mock host kurar. Gerçek SDK aynı pencerede onunla konuşur:
ts
import { Corevo } from '@corevo-ds/app-sdk';
import { createMockHost } from '@corevo-ds/app-sdk/testing';
const host = createMockHost({
params: { title: { tr: 'Merhaba' } },
media: { media_1: 'https://cdn.example/1.png' },
capabilities: ['track'],
});
await Corevo.ready();
host.updateParams({ title: { tr: 'Selam' } });
host.setLocale('en');
host.setVisible(false);
const tracked = host.messages.filter((m) => m.type === 'track');