A Rollup plugin for Software Product Lines
Last updated 3 years ago by 125m125 .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install rollup-plugin-spl 
SYNC missed versions from official npm registry.


Build Status

A Rollup plugin to create Software Product Lines with the help of MetaScript.


Install rollup-plugin-spl dependency

npm install --save-dev rollup-plugin-spl

Add rollup-plugin-spl to your rollup.config.js

import rollupPluginSpl from "rollup-plugin-spl";

export default {
    plugins: [
            // set options here


  • model: either the path to your model or the preloaded model
  • config: either the path to your configuration or the preloaded configuration
  • verify: if truthy, the configuration is verified with the model. Only features required for the configuration to be a valid partial configuration are selected.
  • autocomplete: if truthy, unselected features will be selected to form a complete configuration. To configure whether the features are selected positive or negative, an object {preference: <true|false>} can be passed.
  • interactive: asks the user which unselected features should be selected positive and which negative. Compatible with config for a predefined partial selection and autocomplete to fill in features not selected by the user.

Create the SPL model

To create the model, run node node_modules/splconfigurator/target/splconfigurator.cjs.js build <Modelname>. A detailed explanation of the process can be found in the manual for the SPL Configurator.

Create an SPL configuration

To create a configuration for your SPL, run node node_modules/splconfigurator/target/splconfigurator.cjs.js configure path/to/your/model. A detailed explanation of the process can be found in the manual for the SPL Configurator.

Write the code

To exclude parts of your source code when a certain feature is selected positive or negative, wrap it inside a MetaScript if else:

console.log("always included");
//? if (INCLUDE_A) {
console.log("feature INCLUDE_A is selected");
//? } else {
console.log("feature INCLUDE_A is not selected");
//? }

This process is similar to ifdef from the cpp. A detailed explanation can be found in the MetaScript manual

Current Tags

  • 0.0.6                                ...           latest (2 years ago)

7 Versions

  • 0.0.6                                ...           2 years ago
  • 0.0.5                                ...           3 years ago
  • 0.0.4                                ...           3 years ago
  • 0.0.3                                ...           3 years ago
  • 0.0.2-pre                                ...           3 years ago
  • 0.0.2                                ...           3 years ago
  • 0.0.1                                ...           3 years ago
Maintainers (1)
Today 0
This Week 0
This Month 3
Last Day 1
Last Week 1
Last Month 2
Dependencies (4)
Dev Dependencies (3)
Dependents (0)

Copyright 2014 - 2017 © |