如何使全球可访问的nodejs cli

我试图让我的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

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

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

  1. 通过相对path包含本地项目依赖关系
  2. 全球链接项目
  3. 在其他文件中使用该项目(或者将其安装在一台全新的机器上),并保持依赖关系不变。

像Grunt和Gulp这样的库如何设法提供全局可用的命令行界面? 请帮忙!

我不直接使用相对path,而是使用具有相对path的nodejs全局对象 ;

  • process.cwd()
  • __文件名
  • __dirname

这可能取决于您的项目具体需要什么时候需要什么。 在我的项目stubb-db中,我使用config builder在高级之前构build所有的path。