我知道如何通过以下方式在JS中检索命令行参数,
`Config.getTestArgs = () => {
try {
return global.commandLineArgs.args["test-args"];
}
catch (e) {
logger.error(`Error reading test - args from command line: ${ e } `);
return null;
}
};`
当我在Typescript中使用相同的方式时,出现错误Cannot find module- global
如果我通过
`--build --test-args TestArument1`
getTestArgs
应该返回TestArgument1作为输出。
考虑一下,我们有自己的使用nodeJs和Typescript的构建系统。我需要考虑哪些nodeJS依赖项?
答案 0 :(得分:1)
在Typescript和(通常为Node.js)中,有几种检索命令行参数的方法。您可以使用内置的process.argv
属性,该属性返回一个数组,其中包含启动Node.js进程时传递的命令行参数。由于前两个参数几乎始终为node
和path/to/script.js
,因此通常将其用作process.argv.slice(2)
。
示例:
node script.js --build --test-args TestArgument1
script.js
console.log(process.argv.slice(2)) // [ '--build', '--test-args', 'TestArgument1' ]
另一种可能更好的方法是使用经过测试的库来解析您的命令行参数。热门选项包括:
Minimist :用于最少的参数解析。
Commander.js :最常用的参数解析模块。
Meow :Commander.js的替代方案
Yargs :更复杂的参数解析(繁重)。
Vorpal.js :具有参数解析功能的成熟/交互式命令行应用程序。
对于您的情况,Minimist可能是最佳解决方案。
node script.js --build --test-args TestArgument1
看起来像这样:
const argv: minimist.ParsedArgs = require('minimist')(process.argv.slice(2));
console.dir(argv);
/*
{
_: [ 'build' ],
test-args: 'TestArgument1'
}
*/