一、必备插件
1. babel:es6语法支持,需要babel-perset-es2015(转换成es5执行)、babel、babel-core(程序执行)
2. commander:自定义命令插件,提供参数的传递等
3. liftoff:实现对命令窗口的输入监听,以及命令格式化规格。
4. minimist:读取命令行参数插件
以上插件都可以通过npm直接安装。
二、示例代码分析:
2.1. cli.js
var liftOff = require("liftoff");import app from "./app";var argv = require("minimist")(process.argv.slice(2));var cli =new liftOff({ name: "sam", processTitle: ‘samLong‘, moduleName: "sam", extensions:{ ‘.js‘:null }});cli.launch({ cwd: argv.r || argv.root, configPath: argv.f || argv.file},function(env){ console.log("命令名称:" + argv["_"]); console.log( "执行路径:" + env.cwd); var commander = require(‘commander‘); var _app = new app(); _app.register(commander);});
1. liftOff类:通过导入liftOff第三方插件实现对命令行参数进行解析,且通过liftOff的实例方法launch进行捕获
2. require("minimist")(process.argv.slice(2)):将命令行参数转换为对象
3. ./app:导入命令执行类
2.2. app.js
class App { register(commander) { commander .option(‘-d --date‘, "显示时间") .parse(process.argv); if (commander.date) { console.log(‘date命令被执行‘); } } }; export default App;
通过commander实现的一个简单的命令执行类。
2.3. index.js
require("babel-core/register"); //导入babel-core,用于在代码中转换我es6 require("./src/app"); require(‘./src/cli‘);
2.4. 执行效果:
三、GIt地址
[email protected]:cqhaibin/commandertest.git
时间: 2024-12-17 01:47:53