Skip to main content
Joined separate code snippets for better readability
Source Link

ES6-style no-dependencies solution:

const longArgs = arg => { const [ key, value ] = arg.split('='); return { [key.slice(2)]: value || true } }; const flags = arg => [...arg.slice(1)].reduce((flagObj, f) => ({ ...flagObj, [f]: true }), {}); const args = () => process.argv .slice(2) .reduce((args, arg) => ({ ...args, ...((arg.startsWith('--') && longArgs(arg)) || (arg[0] === '-' && flags(arg))) }), {}); 
   console.log(args()); 

ES6-style no-dependencies solution:

const longArgs = arg => { const [ key, value ] = arg.split('='); return { [key.slice(2)]: value || true } }; const flags = arg => [...arg.slice(1)].reduce((flagObj, f) => ({ ...flagObj, [f]: true }), {}); const args = () => process.argv .slice(2) .reduce((args, arg) => ({ ...args, ...((arg.startsWith('--') && longArgs(arg)) || (arg[0] === '-' && flags(arg))) }), {}); 
 console.log(args()); 

ES6-style no-dependencies solution:

const longArgs = arg => { const [ key, value ] = arg.split('='); return { [key.slice(2)]: value || true } }; const flags = arg => [...arg.slice(1)].reduce((flagObj, f) => ({ ...flagObj, [f]: true }), {}); const args = () => process.argv .slice(2) .reduce((args, arg) => ({ ...args, ...((arg.startsWith('--') && longArgs(arg)) || (arg[0] === '-' && flags(arg))) }), {});   console.log(args()); 
Source Link
tibalt
  • 16.4k
  • 1
  • 33
  • 23

ES6-style no-dependencies solution:

const longArgs = arg => { const [ key, value ] = arg.split('='); return { [key.slice(2)]: value || true } }; const flags = arg => [...arg.slice(1)].reduce((flagObj, f) => ({ ...flagObj, [f]: true }), {}); const args = () => process.argv .slice(2) .reduce((args, arg) => ({ ...args, ...((arg.startsWith('--') && longArgs(arg)) || (arg[0] === '-' && flags(arg))) }), {}); 
console.log(args());