如何创建一个全局可访问的nodejs cli

时间:2016-05-19 16:43:23

标签: node.js npm

我正在尝试将我的cli.js文件设为全局cli:

#!/usr/bin/env node

// ----------------------------------
// CLI
//
// Command line tool
// ----------------------------------

var program = require('commander');
var lib = require('../lib'); // <--- This may be an issue

program
  .version('0.0.1')
  .usage('<cmd>')
  .parse(process.argv);

console.log('Running');

我将此文件包含在package.json

...
"bin": {"cli":"./bin/cli.js"}
..

运行npm install后,我可以链接bin文件,但我无法全局运行。我的意思是,如果我去另一个目录并运行

$ cli

不仅相对路径无效(我需要注入lib依赖项),我还需要再次链接文件。

只是为了澄清,这正是我想要实现的目标:

  1. 通过相对路径包含本地项目依赖项
  2. 全球链接项目
  3. 在其他文件中使用该项目(或将其安装在一台全新的计算机上)并保持相关性。
  4. 像Grunt和Gulp这样的图书馆如何设法提供全球可用的命令行界面?请帮忙!

1 个答案:

答案 0 :(得分:0)

我不直接使用相对路径,而是使用nodejs global objects和相对路径;

  • process.cwd()
  • __文件名
  • __目录名称

这可能取决于您的项目特定需求何时需要。在我的项目stubb-db中,我使用config builder在使用之前构建了所有高级路径。