一些工具学习

2019-04-27  本文已影响0人  粑粑八成

0. 整个流程

1. commander.js(制作cli工具)

1 .action回调函数接受的参数和输入的一致,

  1. 如果输入的是之前option中定义的格式,则会帮你自动放到Command对象里,
  2. 如果自定义参数和option定义的乱序输入,Command对象会自动放到antion回调函数的最后一位
  3. []表示可选参数, <>表示必输参数
  4. option有两个定义
    option(flags: string, description?: string, fn?: ((arg1: any, arg2: any) => void) | RegExp, defaultValue?: any): Command;
    option(flags: string, description?: string, defaultValue?: any): Command;
  1. option里定义的前面最多加三个‘-’,多加了就报错了 XD
var program = require("commander");

program
  .version("0.0.1")
  .usage("[options] [dir]")
  .description("a test cli program")
  .option("-n, --name <name>", "your name", "GK")
  .option("-a, --age <age>", "your age", "22")
  .option("-e, --enjoy [enjoy]")
  .action((ccc, options) => {
    console.log(1111111111, ccc);
    console.log(222222222222222, options);
  });

program.parse(process.argv);

2. node.js readline(与用户在终端的输入进行交互)

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('你如何看待 Node.js 中文网?', (answer) => {
  // TODO:将答案记录在数据库中。
  console.log(`感谢您的宝贵意见:${answer}`);

  rl.close();
});
function confirm(msg, callback) {
  var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });

  rl.question(msg, function (input) {
    rl.close();
    callback(/^y|yes|ok|true$/i.test(input));
  });
}

3. chalk.js 控制打印的字体颜色字体样式

4. cross-spawn.js

使用spawn创建子进程执行命令

5. 清空控制台输出(感觉就和手动输入了clear一样)

\x1B ASCII对应到 ESC

Linux ANSI 控制码
这几个命令大概的意思是:
[2J 清除控制台
[H 将光标移至最顶部

 process.stdout.write(
    process.platform === 'win32' ? '\x1B[2J\x1B[0f' : '\x1B[2J\x1B[3J\x1B[H'
  );

判断操作系统 process.platform/os.platform()

6. mkdirp.js

和mkdir -p 一样,递归创建目录,层级的;

7. path.resolve

返回一个绝对路径的字符串

const path = require('path')
// /表示根路径
console.log(path.resolve('/foo/bar', './baz'))
// 输出 D:\foo\bar\baz
// 什么都不加的情况
console.log(path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif'))
// 输出  工作目录+\wwwroot\static_files\gif\image.gif

8. fs.writeFileSync

在没有改文件时就自动创建

9. fs-extra.js

掘金文章介绍相关API

10. dedent.js

去处多行字符串中的缩进

const dedent = require('dedent');
console.log(dedent(`Line #1
                                Line #2
Line #3`))

/*
Line #1
Line #2
Line #3
*/

11.读JSON文件

function readJSONFile (...restPath) {
  let result = []
  try {
    result = JSON.parse(fs.readFileSync(path.resolve.apply(null, restPath)));
  } catch(e) {
    throw e;
  }
  return result;
}
上一篇下一篇

猜你喜欢

热点阅读