A tool to orchestrate builds and manage dependencies for language neutral, multi-version projects, inspired by npm.

If you already know the general facts about xpm, you can directly skip to the desired pages.

User pages:

Developer & maintainer pages:

Overview

xpm stands for xPack project manager and is a Node.js CLI application to manage xPack projects; it can:

  • install source and binary packages
  • manage multiple build configurations
  • execute (multi-)command line actions
  • manage properties and perform complex substitutions, using the LiquidJS engine

xpm complements npm and shares the same public packages repository (npmjs.com).

The open source project is hosted on GitHub as xpack/xpm-js.

It is available as xpm from npmjs.com public registry and can be installed via npm.

Examples

An example of a representative project using xpm to manage multi-platform test is @micro-os-plus/utils-lists; please check the package.json file.

For a hands-on experience, see the xpack/hello-world-template-xpack project.

xPacks overview

xPacks are general purpose multi-version software packages, built on top of the highly successful npm packages in the Node.js JavaScript ecosystem.

Please read the xPacks Overview and xPack 101 pages.

Purpose

The main purpose of the xpm CLI tool is to orchestrate builds, including to install dependencies, and to easily update them when new versions are released.

xpm CLI commands

Planned:

  • xpm outdated
  • xpm update
  • xpm cache

For publishing and other common operation, use npm:

Configuring xpm

License

The original content is released under the MIT License, with all rights reserved to Liviu Ionescu.

The design is heavily influenced by the npm application, Copyright (c) npm, Inc. and Contributors, Licensed on the terms of The Artistic License 2.0.

Note

The xpm tool is currently work in progress and should be used with caution.

Edit

Comments on the content of this page that might be useful for other readers are welcomed here. For question and general support, please use GitHub Discussions.