npm链接git-style子命令

时间:2015-03-24 22:52:24

标签: javascript node.js command-line-interface node-commander

我在使用npm link使用commander构建的nodejs cli工具时遇到问题。

使用commander创建一个git风格的子命令样式cli工具我有这些文件:

foo.js

FOO-config.js

和foo.js(主文件看起来像这样)

#!/usr/bin/env node  
'use strict';

var program = require('commander');
var pkg = require('./package.json');

program
  .version(pkg.version)
  .command('config', 'Creates default configuration files')
  .parse(process.argv);

我的package.json有这个配置

"bin": {
  "foo": "foo.js"
}

当我运行npm link时,它成功生成了符号链接。我甚至可以运行命令,看到config cmd显示在帮助菜单中。

但是当我尝试运行$ foo config时,我收到以下消息

foo-config(1) does not exist, try --help

我现在该怎么办?

2 个答案:

答案 0 :(得分:3)

文件foo-config.js的名称应为foo-config,不带扩展名。

如果全局安装,所有可执行文件都应该是chmod 755

答案 1 :(得分:0)

我这样做,包括package.json bin部分中的所有命令。在您的示例中:

"bin": {
    "foo": "foo.js",
    "foo-config": "foo-config.js"
}

使用此配置,npm链接将安装所有可执行文件,并且所有命令将起作用。