如何构建一个cli工具

原因:经历过多次的从0到1,手动搭建了N个项目之后,大量的重复性劳动
所以:DRY(Don’t repeat yourself)一个简单cli 避免更多的重复

1、创建一个目录
2、npm init
3、你可能需要这些依赖加入到你的package.json中

 "dependencies": {
    "chalk": "^2.4.1",
    "commander": "^2.18.0",
    "figlet": "^1.2.0",
    "inquirer": "^6.2.0",
    "shelljs": "^0.8.2"
    "git-clone":"^0.1.0"
  }

自己写clone文件或直接使用npm包 git-clone
4、创建一个js文件姑且叫它index.js

#!/usr/bin/env node
//这里要注意开头的 #!/usr/bin/env node这个语句必须加上,主要是为了让系统看到这一行的时候,会沿着该路径去查找 node 并执行,主要是为了兼容 Mac ,确保可执行。

const program = require('commander'); // node.js命令行界面的完整解决方案
const shell = require('shelljs'); // Nodejs使用ShellJS操作目录文件
const chalk = require('chalk'); // 添加背景色
const inquirer = require('inquirer'); //一个用户与命令行交互的工具
const clone = require('./lib/clone'); //git-clone或者自己写的
const pkg = require('./package');

program
  .version(pkg.version)
  .usage("hao ")
  .description(pkg.dependencies)

program
  .command('init')
  .alias('i')
  .description('请选择模版初始化工程')
  .action(function() {
    require('figlet')('H A O', function(err, data) {
     ....省略若干
  })

program
  .on('--help', function() {`在这里插入代码片`
  console.log('');
  console.log('Examples:');
  console.log('');
});

program.parse(process.argv);

5、再package.json文件中添加bin(bin 用来指定每个命令所对应的可执行文件的位置)

"bin": {
    "x'x": "./index.js",
    "x'x-cli": "./index.js"
  },

然后在根目录下执行 npm link (就是把命令挂载到全局的意思),这样我们每次只要输入 xx,就可以直接运行

6、发布npm包

	1、npm adduser

	在发布npm包前,需要先登录npm。

	2、npm publish

	在工程的根目录,执行这命令即可。

7、可以安装npm install xx-cli -g
8、执行xx-cli 即可安照cli源码写的步骤进行

你可能感兴趣的:(工具)