首页 > 解决方案 > 在像 electronjs 这样的自定义节点模块中添加命令行行为

问题描述

-g我正在创建一个 JavaScript 库,我希望它在与标志一起安装时用作命令。问题是我如何实现这种行为。我应该能够将其用作命令。

由于电子以这样的方式运行,我认为我可以参考电子代码,但没有从它发生的地方得到。


我已经实现了以下行为

node_modules/nexam/index.js

module.exports = require("./lib/nexam");

node_modules/nexam/lib/nexam.js

'use strict'

exports = module.exports;

exports.sayHello = function(){
   console.log("Hello World");
}

main.js

const nexam = require("nexam");

nexam.sayHello();

输出:

$ node main.js
Hello World

我想像这样使用它

$ npm install -g nexam
$ nexam --version
nexam v1.0.0

$ nexam --sayHello
Hello World

标签: javascriptnode.jsnode-modules

解决方案


这里有两件事需要处理。

  1. 添加bin到您的package.json文件
"bin": {
        "nexam": "./index.js"
      }
  1. 使用command npm 包读取 cli 命令它非常易于使用。这是他们文档页面的片段。
var program = require('commander');

program
  .version('0.1.0')
  .option('-p, --peppers', 'Add peppers')
  .option('-P, --pineapple', 'Add pineapple')
  .option('-b, --bbq-sauce', 'Add bbq sauce')
  .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
  .parse(process.argv);

console.log('you ordered a pizza with:');
if (program.peppers) console.log('  - peppers');
if (program.pineapple) console.log('  - pineapple');
console.log('  - %s cheese', program.cheese);

一切顺利。


推荐阅读