NodeJS – 我可以检测何时从命令行(ES6 +巴别)调用..?
在我的模块中,我需要检测它是从命令行还是从另一个模块调用。
const isFromCLI = '????'
我使用的是Babel / ES6,所以当从命令行调用时, index.js
被调用(使用babel代码),它将交给script.js
(使用ES6代码)。 所以从脚本文件中, module.parent
返回module
( index.js
文件)。 所以我不能使用 module.parent
!
此外,当从命令行或从另一个模块调用module.main
, module.main
是undefined
(在script.js
)。 所以我不能使用 module.main
!
这是其他人提出的两种解决scheme,但是他们不适合我。
使用Babel / ES6时有没有简单的检测?
更新
require.main
在从命令行或从另一个模块调用时返回模块。
您可以使用节点中的Process
。
https://nodejs.org/api/process.html#process_process_argv
检查第二个参数的值(做一个包含types匹配)。 不知道这是否是唯一的方法,但它是一个简单的方法来实现你所需要的
代码片段可能是:
const isFromCLI = (process.argv[1].indexOf('my-script.js') !== -1);
您可以使用节点环境variables 。
你可以像这样设置一个环境variables:
CLI=true node app.js
然后获取像这样的环境variables:
const isFromCLI = process.env.CLI === 'true'
注意: process.env.CLI
将是一个string。
更新:
如果你想做类似node app.js --cli
东西,你可以这样做:
let isFromCLI process.argv.forEach(function (val, index, array) { if (array[index] === '--cli') { isFromCLI = true } }) console.log(isFromCLI)