Search by

microweber-packages / microweber-package-manager-client

boksiora

Standalone Composer package manager client for Microweber and Laravel apps: search, install, update modules/templates and nwidart Laravel modules with install-dir detection

Package info

github.com/microweber-packages/microweber-package-manager-client

Homepage

pkg:composer/microweber-packages/microweber-package-manager-client

Statistics

Installs: 31

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-11-03 16:17 UTC

This package is auto-updated.

Last update: 2026-11-03 17:07:22 UTC


README

Standalone Composer package manager client for Microweber CMS and any Laravel application.

Features

  • Search packages from one or more Satis / Composer packages.json endpoints
  • Install and update packages (download zip → extract → place in install dir)
  • Install-dir detection for:
    • microweber-module → Modules/{TargetDir}/
    • microweber-template → Templates/{TargetDir}/
    • generic nwidart Laravel modules (laravel-module / nwidart-module / module.json) → Modules/{StudlyName}/
  • License headers for private marketplace servers
  • Ed25519 package signature verification (optional supply-chain check)
  • Works without Microweber helpers — fully configurable paths

Install

composer require microweber-packages/microweber-package-manager-client

Path repository (monorepo):

{
  "type": "path",
  "url": "packages/microweber-package-manager-client",
  "options": { "symlink": true }
}

Standalone Laravel usage

use MicroweberPackages\PackageManagerClient\PackageManagerClientService;

$client = app(PackageManagerClient::class);

// Point at your Satis / packages.json URL
$client->setPackageServers(['http://127.0.0.1:9999/packages.json']);

// Search all packages
$all = $client->search();

// Search one package
$pkg = $client->search([
    'require_name' => 'microweber-modules/sample-hello',
    'require_version' => '1.0.0',
]);

// Install (two-step confirm flow, same as Microweber marketplace)
$step1 = $client->requestInstall([
    'require_name' => 'microweber-modules/sample-hello',
    'require_version' => 'latest',
]);

if (isset($step1['form_data_module_params']['confirm_key'])) {
    $step2 = $client->requestInstall($step1['form_data_module_params']);
    // $step2['success'] on success
}

Config

Publish:

php artisan vendor:publish --tag=package-manager-client-config

Key options (config/package-manager-client.php):

Key Default Purpose
package_servers modules.microweberapi.com Satis endpoints
modules_path Modules Module install base
templates_path Templates Template install base
download_path storage/cache/composer-download Temp download dir

Install-dir detection

use MicroweberPackages\PackageManagerClient\InstallDirDetector;

$detector = app(InstallDirDetector::class);
$target = $detector->detect([
    'name' => 'acme/blog',
    'type' => 'laravel-module',
    'extra' => ['laravel-module' => ['name' => 'Blog']],
]);

// $target->type === 'laravel-module'
// $target->directory === 'Blog'
// $target->absolutePath === base_path('Modules/Blog')

Microweber CMS

The CMS marketplace, installer, and update manager resolve PackageManagerClient (and legacy class aliases) via the service container. Register the provider if auto-discovery is disabled:

MicroweberPackages\PackageManagerClient\PackageManagerClientServiceProvider::class,

Tests

cd packages/microweber-package-manager-client
composer test
# or from monorepo root:
./vendor/bin/phpunit packages/microweber-package-manager-client/tests

Satis-style fixtures live under tests/Fixtures/sample-packages/ and are served by an in-process temp HTTP server during install tests.

PHPStan

composer analyse -- packages/microweber-package-manager-client/src
# or package-local:
cd packages/microweber-package-manager-client && composer analyse

Level 9 (max).