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

时间:2019-12-04 14:45:27

标签: node.js typescript typescript-typings

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

1 个答案:

答案 0 :(得分:1)

在Typescript和(通常为Node.js)中,有几种检索命令行参数的方法。您可以使用内置的process.argv属性,该属性返回一个数组,其中包含启动Node.js进程时传递的命令行参数。由于前两个参数几乎始终为nodepath/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'
 }
*/