使CLI和JavaScript的节点包都起作用

时间:2017-10-05 21:58:29

标签: node.js node-modules

如何打包一个既包含CLI又使用JavaScript API的节点,根据运行的位置对特定逻辑进行切换。

这显然与大多数主要节点包很相似,但是我还没有找到关于这种模式的任何讨论。

1 个答案:

答案 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');