如何打包一个既包含CLI又使用JavaScript API的节点,根据运行的位置对特定逻辑进行切换。
这显然与大多数主要节点包很相似,但是我还没有找到关于这种模式的任何讨论。
答案 0 :(得分:0)
您可以在任何JavaScript文件的开头添加一个shebang行,例如考虑这个文件 hello.js :
#!/usr/bin/env node
function hello(name) {
console.log('hello ' + name);
}
/* if called directly from command line or from a shell script */
if (require.main === module) {
hello(process.argv[2]);
}
module.exports = hello;
请注意告诉shell如何执行代码的第一行。
您可以使用以下命令创建 hello.js 可执行文件:
chmod u+x hello.js
现在你可以像这样调用它:
./hello.js joe
输出:“hello joe”。
您也可以像往常一样在Node.js中的任何其他JavaScript文件中使用相同的文件作为依赖项:
const hello = require('./hello');
hello('joe');