- 首先也需要一个入口文件,然后在入口文件最顶部写
#! /usr/bin/env node
- 在package.json文件中添加一个bin字段,如图
- 在入口文件中可以利用node 提供的api process.argv来获取命令行参数,
- process.env的值是一个数组,第一个是node安装的路径,第二个是当前运行文件所在的位置,第三个参数才是我们命令行输入的参数,以空格隔开为下一个
- 也可以逼格高一点,利用commander
- 最后执行npm link 会在本地生成三个文件,文件名就是你在bin字段里面写的key名,这样你直接输入这个名那么他就能运行了 ```javascript const inquirer = require(‘inquirer’); //命令行交互工具 const { program } = require(‘commander’); const {existsSync,writeFileSync,unlinkSync} = require(‘fs’); const path = require(‘path’); //option(‘短flag 长flag’,’对参数的描述’) 长短flag之间可以逗号隔开也可以空格隔开还可以|隔开
//设置交互内容(问题) const promptList = [{ type: “editor”, message: “请输入备注:”, name: “editor” }]; program.version(‘1.0.0’) .option(‘-a add-file’, ‘add one file’) //<> 参数是必传的 .option(‘-d del-file ‘, ‘del one file’) //参数可选
program.parse(process.argv)
const opts = program.opts(); let rootpath = process.cwd(); console.log(‘opts’,opts) if (opts.addFile) { console.log(‘add one file’) //添加文件 // inquirer.prompt(promptList).then(res => { // // console.log(res,’*‘) //结果 // let {editor} = res; // rootpath = path.join(rootpath,opts.addFile) // if(existsSync(rootpath)){ // console.log(‘该文件已经存在’) // return; // } // writeFileSync(opts.addFile,editor); // }) } else if (opts.delFile) { console.log(‘del one file’) //删除文件 // rootpath = path.join(rootpath,opts.delFile); // if(!existsSync(rootpath)){ // console.log(‘路径不存在’) // return; // } // unlinkSync(rootpath); } else {
} ```