从javascript中的字符串解析标志/参数

从javascript中的字符串解析标志/参数,javascript,flags,Javascript,Flags,我正在用javascript构建一个“终端东西”。其思想是,每个命令都是一个单独的.js文件,采用AMD格式,所有内容都加载了requirejs 我希望命令的调用方式如下: command -s "string u-l: extra" -g http://domain.com/random.txt -r -a --test fixed 然后,这将转化为: command({'-s': 'string u-l: extra', '-g': 'http://domain.com/random.tx

我正在用javascript构建一个“终端东西”。其思想是,每个命令都是一个单独的.js文件,采用AMD格式,所有内容都加载了requirejs

我希望命令的调用方式如下:

command -s "string u-l: extra" -g http://domain.com/random.txt -r -a --test fixed
然后,这将转化为:

command({'-s': 'string u-l: extra', '-g': 'http://domain.com/random.txt', '-r': true, '-a': true, '--test': 'fixed'});
但这正是我陷入困境的地方,我尝试在脑海中运行不同的场景,但我找不到任何好的答案,但我可以想出冲突:

  • split()-如果有一些额外的空格,那会破坏一切吗
  • regex-regex依赖于每次都得到类似的字符串,如果我想要像“wget”这样的东西呢
  • 在命令本身中定义规则-仍然需要解决解析问题
  • 管道-如果我想要管道,我必须弄清楚如何不在错误的管道上断裂,例如:“命令-s‘random | pipe’| command2 asd”

如果您有任何想法/建议,我将不胜感激。

如果您分开,事情会变得容易些吗:

  • 解析(使用特殊用途的库,如?)
  • 将解析后的输入转换为所需模块的列表(如果我理解正确,您必须定义参数和命令模块之间的映射)
  • 需要上述模块,然后将相关参数传递给每个模块