构建一个自己的cli

2018-11-24  本文已影响8人  IsaacHHH

一个类似于vue、ract的脚手架,可以快速初始化一个基于hapi.js的项目目录结构。

准备工具

npm install commander log-update shelljs

开始

这里我们的目的是创建一个可以用于初始化一个项目结构的cli。

整体思路很简单:

这里,我们直接使用一个现成的项目的git地址作为模板:git@github.com:imhxc/hapi-temp.git

构建cli代码

#! /usr/bin/env node

const program = require('commander');
const logUpdate = require('log-update');
const shell = rqeuire('shelljs');

program
  .version('1.0.1')
  .usage('app_name')
  .description('构建hapi模板')
  .parse(process.argv);

 if (!program.args.length) {
   program.help();
 }
 if (program.args.length === 1) {
   shell.mkdir('-p', program.args[0]);
   shell.cd(program.args[0]);
   shell.exec('git init');
   let i = 0;
   const frames = ['-', '\\', '|', '/'];
   const interval = setInterval(() => {
    const frame = frames[i = ++i % frames.length];
    logUpdate(`👉 👉 ${frame} initializing ${frame} 👈 👈`);
   }, 50)
   shell.exec('git pull git@github.com:imhxc/hapi-temp.git', (code) => {
     clearInterval(interval);
     if (code !== 0) {
       console.log('Error! Try again');
       shell.exit(1);
     }
     console.log('👏 👏 Completed! You are  good to go! 👏 👏');
   })
 }

代码并不多,核心就是通过拉去一个模板代码到本地。

发布

在发布之前,我们需要配置一下我们的package.json文件。

// package.json
....
"name": "create-hapi-cli", // npm依赖名称
"bin": {
    "create-hapi-app": './bin/index.js'
},
"keywords": {
    "hapi",
    "node",
    "cli"
}
....

在这里,我们主要配置了name,binkeywords字段,其中最关键的就是bin

这里我们指定了cli的调用名称以及执行的文件,这样,我们就可以通过下列方法来执行cli:

create-hapi-app my_app

构建好后,我们需要通过npm publish来发布。如果你是第一次发布,可能需要添加--access public参数:

npm publish --access public

发布成功后,我们就可以通过执行npm install create-hapi-cli -g就可以安装到本地了,就可以调用create-hapi-app命令了。

项目地址

上一篇下一篇

猜你喜欢

热点阅读