02Node自定义脚手架前置内容之创建全局的自定义命令

如何自定义一个自己的脚手架,而不是使用官方提供的如create-react-app等脚手架,因为做项目的时候我们自己要配置很多定制的内容,而这些是官方脚手架没有的。所以我们需要自己来创建一个符合当前项目的脚手架。

1.创建一个全局的自定义命令

1.1打开一个没有任何内容的文件夹,新建一个bin的文件夹,在bin文件夹下创建一个js文件,js文件自己随便取名。

1.2在你创建的js文件中的开头写入如下代码

#! /usr/bin/env node

/usr/bin/env就是让系统使用node来执行你的脚本文件。

 

 1.3在终端下进入你的根目录

 

 输入命令

npm init

命令执行完成后,进入package.json文件中会有如下的代码。

 1.4在终端的根目录下输入npm link命令。

命令完成后,在你的终端输入bin下面的属性值,比如我就应该输入ymz,这里你输入的自定义全局命令是你在使用npm init时,project的name。

 

 这时候就会输出ymz。如果你能正确的输出内容,那么你的全局自定义命令就创建好了。

2.使用commander库用于创建自定义的命令

2.1安装commander库

npm install commander

2.2使用commander提供的方法

//commander插件,用于解析命令行参数
const {program} = require('commander');

//当在终端使用 ymz -s 或者 ymz --save时会显示save something
//这个方法就是添加帮助项,<save>表示传递的参数,使用时应该这样使用 ymz -s xxxx 或者 ymz --save xxxx
program.option('-s --save <save>','save something');

program//[args...]表示你输入的命令后面的所有参数,比如下面的a b c d
.command('create <project> [args...]')//command是创建一个命令比如:ymz create xxxx a b c d
.alias('crt')//给你的create命令取别名为crt 使用时可以ymz crt xxxx  
.description('create a project')//对这个命令进行描述
.action((project,args)=>{//运行这个你定义的命令是要做什么事情,在回调函数中处理你要做的逻辑
    //do something
    console.log(project);
    console.log(args);
})

运行命令 ymz create demo a b  c d这个demo是我们的项目名,a b c d是命令行的参数

 3.和命令行进行交互式操作

3.1使用inquirer库

安装:

npm install --save inquirer@^8.0.0

如果你安装了9.0.0及以上的版本,那么你在引入inquirier时不能使用require的引入方式

npm install --save inquirer@^8.0.0

8.0.0及以下的引入方式

const inquirer = require('inquirer');

const inquirer = require('inquirer');
inquirer.prompt(([{
    type:'list',
    choices:['react','vue'],
    name:'framework'
    message:'please choose one framework about your want to create project',
}])).then(answer=>{
    console.log(answer)
})

inquirer的阅读文档如下

inquirer - npm

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值