美文网首页
一些工具学习

一些工具学习

作者: 粑粑八成 | 来源:发表于2019-04-27 12:46 被阅读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;
    }
    

    相关文章

      网友评论

          本文标题:一些工具学习

          本文链接:https://www.haomeiwen.com/subject/ihlhnqtx.html