node.js - 如何制作一个全局可访问的nodejs cli

标签 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 文件,但无法全局运行它。我的意思是,如果我转到另一个目录并运行

$ 命令行

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

澄清一下,这就是我想要实现的目标:

  1. 通过相对路径包含本地项目依赖项
  2. 在全局范围内链接项目
  3. 在其他文件中使用该项目(或将其安装在全新的计算机上)并保持完整的依赖关系。

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

最佳答案

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

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

这可能取决于您的项目具体需要,何时需要什么。在我的项目中stubb-db我用config builder在使用之前预先构建所有路径。

关于node.js - 如何制作一个全局可访问的nodejs cli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37329367/

相关文章:

javascript - Console.log 不显示任何输出(NodeJs)

javascript - 如何配置 ExpressJS 渲染布局的路径

javascript - 如何使用 `react-share` 包在 Twitter 和 Facebook 上分享图片和描述?

heroku - 在 heroku 上的 node.js 应用程序中使用 Magick++

npm - 如何修复 `npm install`上的程序包超时?

node.js - JSDoc3 和 NodeJS 链接到模块中的类型

javascript - 错误 : Cannot find Module '../utils/composeObjs' after installing generator-stencil globally

json - NodeJS Photoshop PSD 解析器 toJSON() 没有方法

reactjs - 如何使用 Js 或 react js 在前端验证 SSH key ?

node.js - 安装 grunt 时出现 NodeJS NPM 代理错误