• node.js 设置脚本命令


    yargs模块 https://www.npmjs.com/package/yargs https://github.com/yargs/yargs/blob/HEAD/docs/api.md

    const { argv } = require('yargs');
    console.log(argv);
    
    >cui 123 ajanuw -p=./
    { _: [ 123, 'ajanuw' ],
      help: false,
      version: false,
      p: './',
      '$0': 'AppData\Roaming\npm\node_modules\sh\bin\create-user-info.js' }
    

    脚本文件 /bin/main.js

    #!/usr/bin/env node
    
    console.log(123);
    

    package.json

    {
      "name": "sh",
      "version": "1.0.0",
      "description": "",
      "main": "main.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "bin": {
        "r32": "./bin/main.js"
      }
    }
    

    在脚本根目录执行 npm i -g ./ 或则 npm link测试完后删除npm unlink
    r32 执行命令就会出现 123

    这是一个返回 随机数的命令

    #!/usr/bin/env node
    
    const {
      argv
    } = require('yargs')
      .config({
        s: 'c0'
      })
      .option('all', {
        describe: '查看返回字符串类型'
      })
      .alias('v', 'version')
      .help('help')
    
    
    if (argv.version) {
      console.log('1.0.0');
      return;
    }
    
    if (argv.all) {
      console.log(`
        --s=c0  默认返回大小写字母和数字 [c1 全大写] [c2 全小写] [c3 全小写]
      `);
      return;
    }
    
    let len = argv._[0] && typeof + argv._[0] === "number" ?
      +argv._[0] :
      32
    
    const c0 = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; // 大小写字母和数字
    const c1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // 大写
    const c2 = 'abcdefghijklmnopqrstuvwxyz'; // 小写
    const c3 = '123456789'; // 小写
    
    let c = argv.s; // 默认大小写数字
    
    switch (c) {
      case 'c1':
        c = c1;
        break;
      case 'c2':
        c = c2;
        break;
      case 'c3':
        c = c3;
        break;
      default:
        c = c0;
        break;
    }
    
    const random = (a, b) => Math.floor(Math.random() * (b - a + 1) + a);
    
    function randomString32(len, c) {
      // 返回随机字符串
      const c_len = c.length;
      return new Array(len)
        .fill()
        .reduce((acc) => acc += c[random(0, c_len - 1)], '')
    }
    
    const str = randomString32(len, c);
    const exec = require('child_process').exec ;
    exec(`echo ${str} | clip`, (error, stdout, stderr)=>{
      if(error) console.log('复制到粘贴板失败!');
    })
    console.log(str);
    
    >node .inmain.js 6 --s=c3
    842773
    
  • 相关阅读:
    onchange 事件
    JavaScript 声明全局变量和局部变量
    Window 对象 HTML框架标签(Frame)
    HTML DOM Document 对象
    JavaScript 对象
    HTML <frame> 标签的 src 属性
    HTML DOM open() 方法
    数据类型
    python
    angular 在formGroup中失效报错 ngModel cannot be used to register form controls with a parent formGroup directive
  • 原文地址:https://www.cnblogs.com/ajanuw/p/8818873.html
Copyright © 2020-2023  润新知