创建自己的命令行--脚手架必备

一 手工

抛开npm工程化添加命令,一开始想着配置环境变量的都是都是把命令的执行程序的路径添加进去,那么如果我们自己想要执行的命令不也就可以这样,摸索了一番,最后上网查了一下资料果然验证了我的想法,在这里记录下。

  1. 开始,想要写一个js脚手架工具的cli,那肯定要有自己的命令行;
  2. 其次,要知道命令行其实本质都是在cmd或者shell命令,那么我们需要知道如何取创建自己的命令行;
  3. 创建命令行的两个必备:命令执行脚本,含有window命令的脚本,可以使cmd文件也可以是bat的windows批处理文件;
  4. 第三步:配置自己命令行的环境变量,其实命令行的执行都是在环境变量里查找匹配执行的。

详细步骤:
我们以node举例,其实java脚本处理也是类似的

  • 1,创建自己的js文件,内容可以自己定,只要能在node环境下执行就可以了,因为这个命令的本质是node环境下执行的例如
    console.log('start');

    保存在一个特定的文件夹里,记住这个路径例如我这里的路径(C:\Users\***\Desktop\cmd\order.js);

  • 2. 创建一个.bat批处理脚本
    通常是这么写的
    echo off
    node C:\Users\***\Desktop\cmd\order.js %*

    意思其实很简单,输出off 意思是关闭回显,简而言之就是不显示我们具体执行的脚本行,这样会显得高大上一些
    第二行就是   node 执行文件 命令参数
    保存,名字必须是你的想要的命令名:myorder.bat
    到这里,其实已经可以直接执行.bat文件了,直接双击就可以了,只不过这样脚本执行完之后的窗口会立马关掉

  • 3.这一步就是添加命令的环境变量,和其他环境变量的添加方式样,
    直接打开环境变量的编辑窗口,将.bat文件的父级路径copy进去就可以了。
    这样就ok了,这个时候我们直接win+R就可以执行myorder这个命令了,可以看到cmd窗口打印出了start

二 npm

那么回归到npm,npm做的其实就是把这几个步骤替我们做了
我们只需要准备一下配置就行了
一个简单的package.json,一个执行的js脚本
package.json和常见的一致,只不过多了一个bin字段,包括了我们要添加的命令和命令路径,相当于环境变量的path;

"bin": {
    "myorder": "./myorder.js"
  }


批处理脚本

#!usr/bin/env node
console.log('start')

 告诉当前bin的环境是node
然后直接npm login;输入账号密码;npm publish,这样就完成了
我们只需要npm install --save -g myorder就完成了。

我们在控制台输入一下myorder

PS E:\test> myorder
start
PS E:\test>

此外还有clear命令可以直接清除控制台;其实是console.clear();

三 进阶

利用process,我们可以实现控制台的交互,例子如下

var readline = require('readline'),
rdins = readline.createInterface({
	input: process.stdin,
	output: process.stdout
}),
// 控制台输入的参数,需要用%*来匹配
args = process.argv.slice(2);
console.log('请输入交互的第一个单词')
rdins.on('line', (input) => {
	console.log('您输入的是:', input);
	if (input == 'close') {
		rdins.close();
	}
	if (input == 'clear') {
		console.clear();
	}
});
rdins.on('close', (input) => {
	process.exit(0);
})

2.利用child_process来调用系统的进程,来进行扩展;

举例我们现在有angular-cli的脚手架工具,当我们的项目文件目录已经定好时,我们只需要向固定的模块来添加不同的模块,而目录这一参数我们就可以省略;这时候就可以扩展

var exec = require('child_process').exec;//这里调用exec举例,也可以用spawn
var path = '/' + process.argv.slice(2);
exec('ng g component ' + path, {options}, function(){})//具体可以学习下child——process模块

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值