之前使用过一些全局安装的NPM包,安装完之后,可以通过其提供的命令,完成一些任务。比如Fis3,可以通过fis3serverstart开启fis的静态文件服务,通过fis3release开启文件编译与发布;还有vue-cli,可以通过vueinitwebpackmy-project来初始化vue+webpack的项目基础配置。最近有一个需求,需要写一个类似vue-cli的NPM包,通过命令行操作实现项目初始配置,所以就查看了相关资料,学习了一下如何使用node来生成自己的命令。
Nodejs编写命令行
命令的目标:在当前目录下开启一个静态文件服务,端口号为8085
创建目录
构成命令的基础是需要一个命令文件web.js和package.json配置文件,执行以下命令:
$mkdirnode-commander#创建一个文件夹
$cdnode-commander&&mkdirbin
$npminit#初始化package.json文件<br>$cdbin&&touchweb.js#创建命令文件
Nodejs命令文件
#!/usr/bin/envnode
varexpress=require('express');
varpath=process.cwd();
functionrun(argv){
if(argv[0]==='-v'||argv[0]==='--version'){
console.log('versionis1.0.0');
}
elseif(argv[0]==='-h'||argv[0]==='--help'){
console.log('usage:\n');
console.log('-v--version[showversion]')
}
elseif(argv[0]==='-s'||argv[0]==='--start'){
varapp=newexpress();
app.use('/static',express.static(path));
app.listen(8085,function(){
console.log('serverstartatport8085');
});
}
}
run(process.argv.slice(2));
总之,Nodejs文件的头部务必加入#!/usr/bin/envnode这行代码,这里表示使用node作为脚本的解释程序,node的路径通过env来查找,可以避免node安装路径不一带来的问题。