Socket
Book a DemoInstallSign in
Socket

goblin-builder

Package Overview
Dependencies
Maintainers
5
Versions
93
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

goblin-builder

Electron and Debian builder

3.12.0
latest
npmnpm
Version published
Weekly downloads
41
-85.14%
Maintainers
5
Weekly downloads
 
Created
Source

📘 Documentation du module goblin-builder

Aperçu

Le module goblin-builder est un outil de construction et de packaging polyvalent pour les applications Xcraft. Il permet de générer différents types de packages pour diverses plateformes (Windows, Linux, macOS) et formats (Electron, Debian, Node.js, Web, Blitz, NPX). Ce module transforme une application Xcraft en un produit déployable en gérant les dépendances, les ressources et les configurations spécifiques à chaque plateforme.

Sommaire

  • Structure du module
  • Fonctionnement global
  • Exemples d'utilisation
  • Interactions avec d'autres modules
  • Configuration avancée
  • Détails des sources

Structure du module

Le module est organisé autour de plusieurs constructeurs spécialisés, chacun exposé via une commande Xcraft :

  • electronify.js (app-builder) : Crée des applications Electron pour Windows, Linux et macOS
  • debify.js (deb-builder) : Génère des packages Debian pour Linux
  • nodify.js (node-builder) : Crée des applications Node.js autonomes
  • webify.js (web-builder) : Construit des applications web
  • blitzify.js (blitz-builder) : Crée des applications web exécutables dans un conteneur WebAssembly
  • npxify.js (npx-builder) : Génère des packages NPX pour distribution via npm

Tous ces constructeurs héritent d'une classe de base Builder qui fournit les fonctionnalités communes.

Fonctionnement global

Le processus de construction suit généralement ces étapes :

  • Initialisation : Analyse du fichier app.json et des dépendances
  • Préparation des assets : Copie des ressources et des fichiers nécessaires
  • Webpack : Compilation des sources JavaScript (si nécessaire)
  • Installation des dépendances : Via npm
  • Blacksmith : Génération de rendus côté serveur (si configuré)
  • Packaging : Création du package final selon le format cible

Chaque constructeur spécialise ce flux de travail pour son format cible spécifique.

Exemples d'utilisation

Construction d'une application Electron

// Via la ligne de commande Xcraft
await quest.cmd('electronify.build', {
  appId: 'my-app',
  output: '/path/to/output',
});

// Avec des options avancées
await quest.cmd('electronify.build-opts', {
  appId: 'my-app',
  variantId: 'pro',
  appDir: '/path/to/app',
  libDir: '/path/to/lib',
  output: '/path/to/output',
  release: true,
  arch: 'x64',
  compression: 'maximum',
});

Construction d'un package Debian

await quest.cmd('debify.build', {
  appId: 'my-app',
  output: '/path/to/output',
});

Construction d'une application Node.js

await quest.cmd('nodify.build', {
  appId: 'my-app',
  output: '/path/to/output',
});

Construction d'une application Blitz

await quest.cmd('blitzify.build', {
  appId: 'my-app',
  output: '/path/to/output',
});

Construction d'un package NPX

await quest.cmd('npxify.build', {
  appId: 'my-app',
  output: '/path/to/output',
});

Interactions avec d'autres modules

Configuration avancée

Le module goblin-builder peut être configuré via le fichier app.json de l'application :

OptionDescriptionTypeValeur par défaut
appIdIdentifiant de l'applicationString-
productNameNom du produitString'Goblins'
descriptionDescription de l'applicationString-
versionFromModule à partir duquel extraire la versionString-
goblinEntryPointPoint d'entrée goblinString'laboratory'
mainGoblinModuleModule goblin principalString-
fileAssociationsAssociations de fichiers pour l'applicationArray-
protocolsProtocoles URL gérés par l'applicationArray-
buildOptions spécifiques à electron-builderObject-
debifyOptions spécifiques à node-debObject-
excludeResourcesRessources à exclure du packageArray/String-
unpackedResourcesRessources à ne pas inclure dans l'archive ASARArray/String-
extraBuildsBuilds supplémentaires à effectuerObject-
blitzifyOptions spécifiques pour le builder BlitzObject-
noAsarDésactive l'archive ASAR pour ElectronBooleanfalse
archArchitecture cible (ia32, x64, arm, arm64)String/Objectprocess.arch
debDepsDépendances Debian supplémentairesArray-
goblinResourcesDossiers de ressources des modules goblinArray/String-
excludedGoblinFilesFichiers goblin à exclureArray/String-
excludedFilesFichiers généraux à exclureArray/String-

Variables d'environnement

VariableDescriptionExempleValeur par défaut
NODE_ENVEnvironnement Node.js'production'-
BUILD_NUMBERNuméro de build (généré automatiquement sur Windows)'2508'-
SIGNTOOL_PATHChemin vers l'outil de signature (Windows)'C:\Program Files\esign.exe'-
APPLE_ID_TEAMID d'équipe Apple pour la notarisation (macOS)'ABC123DEF'-

Détails des sources

blitzify.js

Point d'entrée pour les commandes Xcraft du constructeur Blitz. Expose les commandes via xcraftCommands en utilisant le service générique avec le backend blitz-builder.

debify.js

Point d'entrée pour les commandes Xcraft du constructeur Debian. Expose les commandes via xcraftCommands en utilisant le service générique avec le backend deb-builder.

electronify.js

Point d'entrée pour les commandes Xcraft du constructeur Electron. Expose les commandes via xcraftCommands en utilisant le service générique avec le backend app-builder.

nodify.js

Point d'entrée pour les commandes Xcraft du constructeur Node.js. Expose les commandes via xcraftCommands en utilisant le service générique avec le backend node-builder.

npxify.js

Point d'entrée pour les commandes Xcraft du constructeur NPX. Expose les commandes via xcraftCommands en utilisant le service générique avec le backend npx-builder.

webify.js

Point d'entrée pour les commandes Xcraft du constructeur Web. Expose les commandes via xcraftCommands en utilisant le service générique avec le backend web-builder.

lib/builder.js

Classe de base pour tous les constructeurs. Elle fournit les fonctionnalités communes :

  • Analyse du fichier app.json
  • Extraction des dépendances
  • Préparation des assets
  • Installation des dépendances
  • Nettoyage des fichiers temporaires

Méthodes publiques

  • extractStartCraft(libDir, dep, isDev, deps) — Extrait récursivement les dépendances d'un module pour la construction.
  • _assets(isDev, next) — Prépare les assets pour la construction, en mode développement ou production.
  • _installDeps(isDev, next) — Installe les dépendances npm, en mode développement ou production.
  • _blacksmith() — Exécute les tâches de rendu côté serveur via goblin-blacksmith.
  • _extraBuilds() — Exécute des builds supplémentaires configurés dans app.json.
  • _cleanup() — Nettoie les fichiers temporaires après la construction.

lib/app-builder.js

Constructeur spécialisé pour les applications Electron. Il gère :

  • La configuration d'electron-builder
  • La signature des exécutables (Windows)
  • La génération de packages pour Windows, Linux et macOS
  • La gestion des associations de fichiers et protocoles
  • La notarisation macOS
  • La génération automatique de numéros de build

Méthodes publiques

  • _clean(next) — Nettoie les répertoires de construction.
  • _webpack() — Compile les sources JavaScript avec webpack pour le rendu Electron.
  • _esignInit() — Initialise l'outil de signature pour Windows.
  • _esign(configuration) — Signe un fichier exécutable sur Windows avec gestion des timeouts et retry.
  • _electron() — Exécute electron-builder pour créer les packages avec configuration complète.
  • run() — Point d'entrée principal qui orchestre tout le processus de construction.

lib/blitz-builder.js

Constructeur spécialisé pour les applications Blitz (WebAssembly). Il gère :

  • La création d'un snapshot de l'application Node.js
  • La génération des fichiers HTML/JS nécessaires pour le conteneur WebContainer
  • Le découpage du snapshot en chunks pour optimiser le chargement
  • L'intégration avec l'API WebContainer pour exécuter l'application dans le navigateur

Méthodes publiques

  • cleanReleaseDir() — Nettoie et réorganise le répertoire de release en déplaçant les modules du dossier lib vers node_modules.
  • generateBlitz(chunks, clientId) — Génère les fichiers nécessaires pour l'application Blitz en utilisant les templates.
  • splitSnapshot(snapshot, size) — Divise le snapshot en chunks de 4MB pour optimiser le chargement.
  • run() — Point d'entrée principal qui orchestre tout le processus de construction.

lib/deb-builder.js

Constructeur spécialisé pour les packages Debian. Il gère :

  • La configuration de node-deb
  • La génération de scripts post-installation
  • La gestion des dépendances Debian
  • La configuration systemd

Méthodes publiques

  • _copyResources(resourcesName) — Copie les ressources spécifiques selon la plateforme et les variantes.
  • _assetsDeb() — Prépare les assets spécifiques pour les packages Debian.
  • _npmInstall(next) — Installe les dépendances npm pour le package Debian.
  • _nodeDeb(next) — Exécute node-deb pour créer le package Debian.
  • _hasBlacksmith() — Vérifie si le module utilise goblin-blacksmith.
  • run() — Point d'entrée principal qui orchestre tout le processus de construction.

lib/get-year-week-number.js

Utilitaire pour générer des numéros de build basés sur l'année et la semaine ISO, utilisé principalement pour les versions Windows.

  • getYearWeekNumber(d) — Obtient le numéro de semaine ISO et l'année correspondante pour une date donnée selon la norme ISO 8601.
  • yearWeekToBuildNumber(year, week) — Convertit une année et un numéro de semaine en numéro de build au format YYWW.

lib/node-builder.js

Constructeur spécialisé pour les applications Node.js autonomes. Il gère :

  • La création d'une structure de projet Node.js
  • L'installation des dépendances de production uniquement
  • La copie des ressources nécessaires
  • Support pour l'omission de types de dépendances spécifiques

Méthodes publiques

  • _copyResources(resourcesName) — Copie les ressources spécifiques selon la plateforme et les variantes.
  • _assetsDeb() — Prépare les assets spécifiques.
  • _npmInstall(next) — Installe les dépendances npm avec support pour les options d'omission.
  • _hasBlacksmith() — Vérifie si le module utilise goblin-blacksmith.
  • _clean() — Nettoie les répertoires de construction.
  • run() — Point d'entrée principal qui orchestre tout le processus de construction.

lib/npx-builder.js

Constructeur spécialisé pour les packages NPX. Il gère :

  • La création d'un package npm exécutable via npx
  • La génération d'un package.json avec les versions exactes des dépendances
  • La copie des ressources nécessaires sans installation des node_modules

Méthodes publiques

  • _copyResources(resourcesName) — Copie les ressources spécifiques selon la plateforme et les variantes.
  • _assets() — Prépare les assets spécifiques pour NPX en utilisant les versions exactes des dépendances.
  • _assetsNpx() — Prépare les assets spécifiques pour NPX.
  • _clean() — Nettoie les répertoires de construction.
  • run() — Point d'entrée principal qui orchestre tout le processus de construction.

lib/service.js

Définit les commandes Xcraft exposées par le module. Utilise le pattern de factory pour créer des services spécialisés :

Méthodes publiques

  • build(quest, appId, output, $arch) — Construction avec les paramètres par défaut en utilisant les chemins du projet.
  • build-release(quest, appId, output, $arch) — Construction en mode release avec signature activée.
  • build-opts(quest, appId, variantId, appDir, libDir, output, release, arch, compression, $targetRuntime, $targetVersion, $targetArch) — Construction avec des options personnalisées complètes.

lib/web-builder.js

Constructeur spécialisé pour les applications web. Il gère :

  • La configuration de webpack pour le web
  • La génération des fichiers statiques
  • La compilation pour le navigateur

Méthodes publiques

  • _clean(next) — Nettoie les répertoires de construction.
  • _webpack() — Compile les sources JavaScript avec webpack pour le web avec target 'web'.
  • run() — Point d'entrée principal qui orchestre tout le processus de construction.

lib/blitz/snapshot.js

Utilitaire pour créer un snapshot d'une application Node.js, utilisé par le constructeur Blitz. Il parcourt récursivement le système de fichiers et sérialise la structure en utilisant msgpackr.

  • snapshot(inputDir, outputFile) — Crée un snapshot du répertoire d'entrée et l'écrit dans le fichier de sortie en format msgpack.

Fichiers spéciaux (Blitz WebContainer)

lib/blitz/www/main.js

Script principal pour l'application Blitz qui :

  • Initialise WebContainer avec l'API appropriée et l'authentification
  • Charge et reconstitue le snapshot de l'application depuis les chunks
  • Monte le système de fichiers dans WebContainer
  • Lance l'application Node.js dans le conteneur avec les paramètres appropriés
  • Gère l'affichage dans une iframe et la redirection des ports

lib/blitz/www/package.json

Configuration npm pour l'environnement WebContainer incluant les dépendances nécessaires (@webcontainer/api) et un script de post-installation pour corriger un bug de chemin de module dans l'API WebContainer.

Définitions d'applications

Les définitions d'applications sont situées dans le répertoire app/ du projet d'application. Le nom du répertoire doit correspondre au nom fourni dans le fichier app.json.

Les entrées appCompany et appId doivent être aussi simples que possible (uniquement /[a-z]+/) car elles sont utilisées pour créer les répertoires de configuration dans le $HOME (utilisateur OS).

La section xcraft est très utile pour fournir des paramètres aux modules xcraft, en particulier xcraft-core-host. Ce module est utilisé pour démarrer la première application.

Exemple :

{
  "xcraft": {
    "xcraft-core-host": {
      "mainQuest": "myapp.boot",
      "secondaryQuest": "myapp.start"
    }
  }
}

La mainQuest est exécutée avant l'état ready d'Electron. Elle doit être utilisée pour gérer des paramètres spéciaux (en ligne de commande) par exemple et toutes les autres choses qui ne dépendent pas d'Electron.

La secondaryQuest est appelée lorsqu'Electron est prêt. Il est alors possible d'utiliser des goblins comme goblin-wm pour créer des fenêtres.

Cette documentation a été mise à jour.

FAQs

Package last updated on 26 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.