我有一个javascript文件,我正在其中运行一些节点任务,并且希望能够根据我触发的终端命令单独运行它们。
例如,我的nodejs文件myFile
代码可能如下所示:
const mysql = require('mysql');
const fs = require('fs');
const getDbData = () => {
...
...
}
const fileTransform = () => {
file transformation functionality
}
我希望能够分别运行每个函数,这样我就可以在终端中说node myFile.js getDbData
。我需要导出每个函数才能执行此操作吗?
您可以在node
命令行上为脚本提供命令行参数。您可以在process.argv
阵列中接收它们。参数从索引2开始(0
是指向node
的完整路径,1
是指向脚本的完整路径(。
例如:
switch (process.argv[2]) {
case "getData":
getData();
break;
case "etlData":
etlData();
break;
// ...
}
请注意,即使Node参数在实际命令行上位于脚本之前,参数也确实从索引2开始。例如:
node--严格使用您的脚本。js
…在process.argv[0]
中仍然有node
的完整路径,在process.argv[1]
中仍然有脚本的完整路径。--use-strict
参数根本不在数组中。
或者,您可以将函数放在对象上,并将参数用作键:
function getData() {
// ...
}
function getData() {
// ...
}
const functions = {
getData,
etlData
};
const fn = functions[process.argv[2]] || () => { console.log("Invalid option"); };
fn();
尝试使用process.argv
。
https://stackabuse.com/command-line-arguments-in-node-js/
解析命令行参数,例如,使用eval()
进行评估