Skip to main content

Getting Started with xpm Core Library

license GitHub Repo stars

Dedicated Pages for Different Audiences

To accommodate the diverse requirements of its audience, this site provides distinct pages: User's Guide, Contributor's Guide and Maintainer's Guide. Each guide is tailored to ensure users can efficiently access the information and resources most relevant to their specific roles or requirements.

This project provides a TypeScript Node.js ES6 module containing common functionality for xpm and xpm-enabled projects.

The module is primarily intended to be incorporated into projects such as the xpm CLI application and the Visual Studio Code xPack C/C++ Managed Build extension.

Features and Benefits

The module's primary purpose is to manage actions and build configurations with template substitution support using the Liquid template engine.

It also handles build configuration inheritance, enabling configurations to inherit properties and actions from parent configurations.

Installation

The xpm Core Library is an npm package available as @xpack/xpm-lib from the npmjs.com public registry and may be installed via npm.

tip

The most straightforward method to obtain the installation command is from the website's homepage. Simply hover the mouse over the command, and a copy button will appear on the right side. Click it to copy the command.

For comprehensive installation instructions, please visit the Installation Guide page.

Status

The @xpack/xpm-lib project is fully functional and stable.

Testing

The library is subject to continuous integration (CI) testing with every push utilising GitHub Actions. This ensures compatibility and stability across Ubuntu, macOS, and Windows operating systems.

Release schedule

There are no scheduled releases; the project employs a continuous release approach, with updates deployed as development progresses.

Releases

A comprehensive list of releases may be found on the Releases pages.

Change log

The release notes and change log may be accessed within the repository's CHANGELOG.md file.

Support & feedback

For prompt support and to provide feedback, it is recommended to utilise GitHub Discussions.

For more detailed information, please visit the Help Centre page.

Compatibility notices

According to SemVer rules:

Major version X (X.y.z | X > 0) MUST be incremented if any backwards incompatible changes are introduced to the public API.

The breaking changes introduced in each major release are documented in reverse chronological order. This information provides a comprehensive overview of significant modifications and is readily available in the respective release notes.

v4.0.0 (2026-01-??)

The API was updated following the implementation of template instantiation. Only initialise() is now asynchronous for actions and build configurations.

v3.0.0 (2026-01-03)

The API was significantly extended to use XpmPackage and XpmLiquid* classes. The project was renamed to xpm-lib, and support for CommonJS was dropped. The project is now ESM-only.

v2.0.0 (2024-03-07)

The project was updated to support both ESM and CommonJS (dual mode).

v1.x (2021-05-10)

First public release under the initial name xpm-liquid.

Licence

Unless explicitly stated otherwise, the original content is distributed under the terms of the MIT Licence, with all rights reserved by Liviu Ionescu.

MacStadium

Credits

Special thanks to MacStadium for providing the Apple Silicon development infrastructure as part of their generous Free and Open Source Software programme.

Thanks to Shields IO for the badges.

Enjoyed Using This Project? Please Let Us Know!

If you have found this project valuable, we would appreciate hearing from you! Here are some ways you can demonstrate your support:

  • Donate: Every contribution, regardless of size, helps sustain the xPack project. Your generosity maintains the development and ensures continued progress.
  • Star the project on GitHub: Assist others in discovering our work by giving it a star — it truly makes a difference!
  • Follow Us on X/Twitter: Stay informed about our latest updates, releases, and news by following our account.

Your support is greatly appreciated and motivates us to continue improving!