Skip to content

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, panelUrl

Script'ler ​

KomutNe yapar
npm run devVite + corevo dev
npm run buildvue-tsc → vite build → (legacy) → corevo build
npm run validatecorevo validate --built: build denetimi, zip yazmaz
npm testvitest
npm run publishcorevo publish

Hedefler (targets) ​

HedefCihazlarKural
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-singlefile ile JS ve CSS'i index.html içine gömer,
  • son parçayı esbuild ile chrome56 hedefine 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 entry dosyası 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ı.
  • modern ve admin script'leri ES2017, legacy script'leri ES5 olarak ayrıştırılır.
  • Kurulu @corevo-ds/app-sdk sürümü manifest.sdk_version aralığı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');