It seems LIST are parse as comma separated string and not regular JSON arrays.
#!/usr/bin/env node
const prog = require('caporal');
prog
.version('1.0.0')
.command('order pizza')
.option('--number <num>', 'Number of pizza', prog.INT, 1)
.option('--kind <kind>', 'Kind of pizza', /^margherita|hawaiian$/)
.option('--discount <amount>', 'Discount offer', prog.FLOAT)
.option('--add-ingredients <ingredients>', prog.LIST)
.action(function(args, options) {
console.log(options);
console.log(options.addIngredients.length);
// options.kind = 'margherita'
// options.number = 1
// options.addIngredients = ['pepperoni', 'onion']
// options.discount = 1.25
});
prog.parse(process.argv);
// ./myprog order pizza --kind margherita --discount=1.25 --add-ingredients=pepperoni,onion
./myprog order pizza --kind margherita --discount=1.25 --add-ingredients=pepperoni,onion
{ number: 1,
kind: 'margherita',
discount: 1.25,
addIngredients: 'pepperoni,onion' } // addIngredients should be ['pepperoni', 'onion']
15 // Length of options.addIngredients should be two not the total number of characters