【问题标题】:npm link with git-style sub commands带有 git 样式子命令的 npm 链接
【发布时间】:2015-03-24 22:52:23
【问题描述】:

我在使用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

我现在该怎么办?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我还必须在foo-config.js的第一行添加shebang:#!/usr/bin/env node
      猜你喜欢
      • 2020-03-14
      • 2020-11-25
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 2021-04-09
      • 2012-01-20
      • 1970-01-01
      相关资源
      最近更新 更多