NodeJS 如何在typescript中检索在构建[自定义构建系统]期间传递的命令行参数

pepwfjgg  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(164)

我知道如何使用以下方式在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依赖项?

2hh7jdfx

2hh7jdfx1#

在Typescript和Node.js中,通常有几种方法可以检索命令行参数。您可以使用内置的process.argv属性,该属性返回一个数组,其中包含启动Node.js进程时传递的命令行参数。由于前两个参数几乎总是nodepath/to/script.js,因此通常用作process.argv.slice(2)

示例:

node script.js --build --test-args TestArgument1
  • 脚本.js*
console.log(process.argv.slice(2)) // [ '--build', '--test-args', 'TestArgument1' ]

另一种可能更好的方法是使用经过测试的库来解析命令行参数。流行的选项包括:

Minimist:用于最小参数解析。
Commander.js:参数解析最常用的模块。
Meow:Commander.js的更轻量级的替代方案
Yargs:更复杂的参数解析(重)。
Vorpal.js:具有参数解析的成熟/交互式命令行应用程序。

对于你的情况极简主义可能是最好的解决方案。
node script.js --build --test-args TestArgument1看起来像这样:

const argv: minimist.ParsedArgs = require('minimist')(process.argv.slice(2));
console.dir(argv); 
/*
 { 
   _: [ 'build' ],
   test-args: 'TestArgument1'
 }
*/

相关问题