Demonstrando o sistema de build para uma alternativa ao Adobe AIR

ZoneGFX, uma plataforma multi-mídia para apps nativos, utiliza a API do compilador TypeScript para implementar o scripting da plataforma.

A bagagem do TypeScript está escondida sob o nome de EZMAScript.

Status

Status

Não lançei a SDK para uso ainda. Falta:

  • Dependências do Git/registro
  • ESDoc
  • Várias APIs do EZMAScript
  • Language server
  • Runtime ZoneGFX
  • Processo de enpacotamento de app (como msi, apk, aab, deb, AppImage, Snap, e por aí vai)
  • Alguns comandos da SDK

Implementei build scripts no geral, mas eles não rodam ainda devido a falta do runtime ZoneGFX.

Também tem a habilidade de build scripts copiar um .so/.dll nos artefatos de build e a habilidade de um manifesto ZoneGFX copiá-lo para o diretório do programa de build principal.

Começando

  1. Rode esse Bash:
zgfx new com.example.hello-world
  1. Edite src/Main.es

image

  1. Adicione src/enum/JointType.es
//
export type JointType =
    | "a"
    | "b";
  1. Agora, rode esse Bash:
cd com.example.hello-world
zgfx new --lib secondary
  1. Agora, edite secondary/zonegfx.toml (apenas para mudar o ID do pacote)
[package]
id = "com.example.secondary"
version = "0.1.0"
authors = ["Sweax Izone <sweaxizone@gmail.com>"]

[compiler-options]
  1. Agora edite secondary/src/__mod__.es:
//
export const A = 10;
  1. Agora edite o zonegfx.toml do pacote com.example.hello-world para depender no com.example.secondary.
cd .. # com.example.hello-world/

zonegfx.toml:

[workspace]
members = ["secondary"]

[package]
id = "com.example.hello-world"
version = "0.1.0"
authors = ["Sweax Izone <sweaxizone@gmail.com>"]

[dependencies]
"com.example.secondary" = { path = "secondary" }

[compiler-options]
main-component = "src/Main.es"

[application]
framerate = 60
background = "#fff"
  1. Agora, vamos verificar/checar a tipagem dos EZMAScript (isso é, instalar dependências e compilar declarações):
zgfx check

Resultado:

image

Árvore:

com.example.hello-world
├── secondary
│   ├── src
│   │   └── __mod__.es
│   └── zonegfx.toml
├── src
│   ├── enum
│   │   └── JointType.es
│   └── Main.es
├── target
│   │ #     artefatos de build. aqui também teria .js,
│   │ #     mas são emitidos em outros comandos apenas.
│   │ #     o .es que se vê em target/ são .d.ts (similares aos
│   │ #     module headers do C++20 auto-gerados)
│   └── pkg
│       └── dist
│           └── local
│               ├── com.example.hello-world
│               │   ├── last-build.conf
│               │   └── src
│               │       ├── enum
│               │       │   └── JointType.es
│               │       └── Main.es
│               ├── com.example.secondary
│               │   ├── last-build.conf
│               │   └── src
│               │       └── __mod__.es
│               └── mocha
│                   └── src
│                       └── __mod__.es
├── zonegfx.lock
└── zonegfx.toml
1 curtida