直接调用全局安装的Node.js模块

假设我想为Node.js编写一个模块,它将被全局安装。 我不想写任何C ++(或别的东西),而是纯粹的Node.js代码。

基本上这很简单 只需编写模块,然后使用npm install -g进行npm install -g

现在,大多数全局安装的模块提供了直接调用它们的可能性,例如,可以在命令提示符下键入express并运行Express的全局安装应用程序引导程序。

现在我的问题是:我如何做到这一点?

如果我简单地在全局安装一个模块,这不会使其中一个文件成为可执行文件,或者将该文件放到PATH

为了达到这个目的,我需要采取哪些步骤?

所以我的问题基本上是:需要做什么步骤来创build一个“正常”的Node.js模块全局可用的可执行文件?

你需要编写一个可执行文件。 这是用户键入命令时将执行的内容。 这里是一个从JSHint中取得的例子:

 #!/usr/bin/env node require("./../src/cli/cli.js").interpret(process.argv); 

约定表示把这个文件放在项目根目录的bin目录下。 然后你只需要更新你的package.json文件来告诉它在哪里可以find你的可执行文件:

 { "bin": { "jshint": "./bin/jshint" } } 

在这种情况下,可以使用jshint命令从terminal运行可执行文件。 运行时,只需要另一个文件,并在其中调用一个方法,通过任何命令行parameter passing。