我正在尝试使我的 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
依赖项),我还需要再次链接该文件。
澄清一下,这就是我想要实现的目标:
- 通过相对路径包含本地项目依赖项
- 在全局范围内链接项目
- 在其他文件中使用该项目(或将其安装在全新的计算机上)并保持完整的依赖关系。
像 Grunt 和 Gulp 这样的库如何设法提供全局可用的命令行界面?请帮忙!
最佳答案
我不直接使用相对路径,而是使用nodejs global objects具有相对路径;
- process.cwd()
- __文件名
- __目录名
这可能取决于您的项目具体需要,何时需要什么。在我的项目中stubb-db我用config builder在使用之前预先构建所有路径。
关于node.js - 如何制作一个全局可访问的nodejs cli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37329367/