Passing command line arguments to node Cross Platform using different CLI
我将通过cli向自定义节点脚本传递一个可选参数,如下所示:
1 2 3 4 5 6 7 | if (process.argv.indexOf('--sizes') !== -1) { var sizeArgs = process.argv[process.argv.indexOf('--sizes') + 1]; console.log(sizeArgs); //--> 10,20,30 // ... // using sizeArgs.split(',') later to create an array: ['10','20','30'] // plus some other logic to validate values are numbers etc etc. } |
期望的结果是,
- Mac OS-使用终端或ITerm
- Mac OSX-使用终端或ITerm
- Windows-使用命令提示(cmd.exe)
问题
在Windows
很明显,字符串
1 2 3 4 | // print process.argv process.argv.forEach(function (val, index, array) { console.log(index + ': ' + val); }); |
PowerShell打印:
...
2: --sizes
3: 10
4: 20
5: 30
对于满足所需结果的环境,打印如下:
...
2: --sizes
3: 10,20,30
帮助
考虑到PowerShell中的怪癖,如何跨平台实现这一点。最终我需要获得一个大小数组。
我之所以选择使用逗号[
注意:我知道有几个包解决方案yarg、args等(这可能解决PowerShell问题,也可能不解决),但是,我正在尝试在这个阶段避免额外的依赖性。
通过确保
正如这个答案中所建议的。
因此,向
复试
现在,原始问题中使用的测试在所有测试平台/环境中打印如下:
...
2: --sizes
3: 10,20,30