在JavaScript中将字符串解析为命令和args

前端之家收集整理的这篇文章主要介绍了在JavaScript中将字符串解析为命令和args前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我需要解析用于cross-spawn的字符串

从以下字符串:

cmd foo bar
cmd "foo bar" --baz boom
cmd "baz \"boo\" bam"
cmd "foo 'bar bud' jim" jam
FOO=bar cmd baz

对象:

{command: 'cmd',args: ['foo','bar']}
{command: 'cmd',args: ['foo bar','--baz','boom']}
{command: 'cmd',args: ['baz "boo" bam']}
{command: 'cmd',args: ['foo \'bar bud\' jim','jam']}
{command: 'cmd',args: ['baz'],env: {FOO: 'bar'}}

我认为正则表达式是可能的,但我希望避免写一些自定义的东西.有人知道有什么可以做到这一点吗?

编辑

问题和答案仍然很有价值,但对于我的具体用例,我不再需要这样做.我将使用spawn-command(更确切地说,我将使用spawn-command-with-kill),它不需要命令和args是分开的.这将使我的生活更轻松.谢谢!

最佳答案
你可以用正则表达式自己动手,但我强烈建议你看看:

> Substack,或者minimist
> yargs这是对节点进行参数解析的更全面的实现

两者都是战斗硬化和良好支持;最小化者每月下载量约为3000万,而yargs接近一半.

你很有可能找到一种方法来使用其中一种来获得你想要的CLI语法,除了env支持IMO应该单独处理(我无法想象为什么你想要对环境有所了解)变量被设置为命令的一部分)

猜你在找的JavaScript相关文章