NodeJS - 我可以检测从命令行调用的时间(ES6 + Babel)..?

时间:2017-03-10 14:08:24

标签: javascript node.js command-line

在我的模块中,我需要检测从命令行或其他模块调用的时间。

const isFromCLI = '????'

我正在使用Babel / ES6,所以当从命令行调用时,index.js被调用(使用babel代码),它移交给script.js(使用ES6代码)。因此,从脚本文件module.parent返回moduleindex.js文件)。 所以我无法使用 module.parent

此外,从命令行或其他模块调用时,module.mainundefined(在script.js中)。 所以我无法使用 module.main

这些是其他人提出的两种解决方案,但它们对我不起作用。

使用Babel / ES6时是否有一个简单的检测方法?

更新

从命令行或其他模块调用时,

require.main返回module

2 个答案:

答案 0 :(得分:2)

您可以在Node中使用Process

https://nodejs.org/api/process.html#process_process_argv

检查第二个参数的值(执行包含类型匹配)。不确定这是否是唯一的方法,但它是实现您需要的直接方式

代码段可能是:

 const isFromCLI = (process.argv[1].indexOf('my-script.js') !== -1);

答案 1 :(得分:1)

您可以使用Node Environment Variables

您可以设置如下环境变量:

CLI=true node app.js

然后获取如下的环境变量:

const isFromCLI = process.env.CLI === 'true'

注意: process.env.CLI将是一个字符串。

<强>更新

如果您想执行node app.js --cli之类的操作,可以执行以下操作:

let isFromCLI

process.argv.forEach(function (val, index, array) {
  if (array[index] === '--cli') {
    isFromCLI = true
  }
})

console.log(isFromCLI)