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

时间:2013-01-25 07:49:09

标签: node.js module executable npm

假设我想为Node.js编写一个全局安装的模块。我不想编写任何C ++(或其他东西),而是编写简单的Node.js代码。

基本上,这很容易。只需编写模块,然后使用npm install -g安装它。

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

现在我的问题是:我如何实现这一目标?

如果我只是全局安装模块,则不会将其中一个文件作为可执行文件提供,或将该文件放在PATH上。

为了实现这一目标,我需要采取哪些措施?

所以我的问题基本上是:从“普通”Node.js模块创建全局可用的可执行文件需要采取哪些步骤?

1 个答案:

答案 0 :(得分:11)

您需要编写可执行文件。这是用户键入命令时将执行的操作。以下是JSHint

的示例
#!/usr/bin/env node

require("./../src/cli/cli.js").interpret(process.argv);

约定说要将此文件放在项目根目录中的 bin 目录中。然后,您只需要更新 package.json 文件,告诉它在哪里找到您的可执行文件:

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

在这种情况下,可以使用jshint命令从终端运行可执行文件。当它运行时,它只需要另一个文件并调用其中的方法,并通过任何命令行参数。