利用Node.js创建一个密码生成器的全步骤

目录
  • 一、 准备工作
  • 二、 编写命令行
    • 2.1 添加版本和描述
    • 2.2 配置密码长度命令
    • 2.2 密码长度添加默认值:8
    • 2.3 配置保存密码命令
    • 2.4 配置密码格式: 没有数字
    • 2.5 配置密码格式: 没有符号
  • 三、 解析命令行-创建密码
    • 3.1 添加color
    • 3.2 添加剪贴板
  • 四、 保存密码到对应的文件
  • 五、将本地npm模块配置成全局passgen
  • 总结

一、 准备工作

1.1 创建项目

$ npm init

1.2 安装依赖

$ npm i commander chalk clipboardy

1.3 创建入口文件index.js

举个🌰:来了解process.argv

// index.js
console.log(process.argv)

终端执行命令

$ node index

在终端可以看到

process.argv 属性返回数组,其中包含启动 Node.js 进程时传入的命令行参数。 第一个元素将是 process.execPath。 第二个元素将是正在执行的 JavaScript 文件的路径。 其余元素将是任何其他命令行参数.

执行命令

$ node index generate

第三个参数:generate

二、 编写命令行

2.1 添加版本和描述

// index.js
const program = require('commander');
program.version('1.0.0').description('Simple password generator').parse()

终端执行命令:可以看到passgen的描述

继续执行命令:可以看到passgen的版本

2.2 配置密码长度命令

const program = require('commander');

program.version('1.0.0').description('Simple password generator')
program.option('-l --length <number>', 'length of password').parse()
console.log(program.opts())

终端执行命令:可以看到passgen的密码长度命令

终端执行命令:

2.2 密码长度添加默认值:8

program.option('-l --length <number>', 'length of password', '8').parse()
console.log(program.opts())

终端执行命: 不设置密码长度,可以看到使用的是默认值-8

终端执行命令: 设置密码长度为10

2.3 配置保存密码命令

program.option('-l --length <number>', 'length of password', '8')
.option('-s --save', 'save password to password.txt').parse()

2.4 配置密码格式: 没有数字

.option('-nn --no-number', 'remove numbers').parse()

终端执行命: 默认情况下有数字

终端执行命: 设置清除数字密码

2.5 配置密码格式: 没有符号

.option('-ns --no-symbols', 'remove symbols').parse()

终端执行命: 默认情况下有符号

终端执行命: 设置清除数字密码

三、 解析命令行-创建密码

// index.js
const program = require('commander');
const createPassword = require('./utils/createPassword')
const log = console.log

program.version('1.0.0').description('Simple password generator')
program
.option('-l --length <number>', 'length of password', '8')
.option('-s --save', 'save password to password.txt')
.option('-nn --no-numbers', 'remove numbers')
.option('-ns --no-symbols', 'remove symbols').parse()

const {length, save, numbers, symbols} = program.opts()

// Get generated password
const generatedPassword = createPassword(length, numbers, symbols)

// Output generated password

log(generatedPassword)

创建utils/createPassword.js

// createPassword.js
const alpha = 'qwertyuiopasdfghjklzxcvbnm'
const numbers = '0123456789'
const symbols= '!@#$%^&*_-=+'

const createPassword = (length = 8, hasNumbers = true, hasSymbols = true) => {
    let chars = alpha
    hasNumbers ? (chars += numbers): ''
    hasSymbols ? (chars += symbols): ''
    return generatePassword(length, chars)
}

const generatePassword = (length, chars) => {
    let password = ''
    for(let i = 0; i < length; i++){
        password+= chars.charAt(Math.floor(Math.random()*chars.length))
    }
    return password
}
module.exports = createPassword

终端执行命令:查看密码生成情况

3.1 添加color

// index.js
const chalk = require('chalk');
log(chalk.blue('Generated Password: ') + chalk.bold(generatedPassword))

终端执行命令:可以看到颜色有变化

3.2 添加剪贴板

// index.js
const clipboardy = require('clipboardy');
// Copy to clipboardy
clipboardy.writeSync(generatedPassword)
log(chalk.yellow('Password copied to clipboardy!'))

四、 保存密码到对应的文件

// index.js
const savePassword = require('./utils/savePassword')
// Save to file
if (save) savePassword(generatedPassword)

创建utils/savePassword.js

const fs = require('fs')
const path = require('path')
const os = require('os')
const chalk = require('chalk')

const savePassword = (password) =>{
    fs.open(path.join(__dirname, '../', 'passwords.txt'), 'a', '666', (e, id) => {
        fs.write(id, password + os.EOL, null, 'utf-8', ()=>{
            fs.close(id, ()=>{
                console.log(chalk.green('Password saved to passwords.txt'))
            })
        })
    })
}

module.exports = savePassword

终端执行命令: 可以看到项目中生成passwords.txt文件,并且密码已经保存成功

五、将本地npm模块配置成全局passgen

// package.json
  "preferGlobal": true,
  "bin":"./index.js",

终端执行命令:

npm link命令:将npm 模块链接到对应的运行项目中去,方便对本地模块进行调试和测试

//index.js
#!/usr/bin/env node //首行添加

终端执行命令:

总结:大功告成✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️

参考链接:nodejs.cn/api/process

总结

到此这篇关于利用Node.js创建一个密码生成器的文章就介绍到这了,更多相关Node.js密码生成器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 利用Node.js创建一个密码生成器的全步骤

    目录 一. 准备工作 二. 编写命令行 2.1 添加版本和描述 2.2 配置密码长度命令 2.2 密码长度添加默认值:8 2.3 配置保存密码命令 2.4 配置密码格式: 没有数字 2.5 配置密码格式: 没有符号 三. 解析命令行-创建密码 3.1 添加color 3.2 添加剪贴板 四. 保存密码到对应的文件 五.将本地npm模块配置成全局passgen 总结 一. 准备工作 1.1 创建项目 $ npm init 1.2 安装依赖 $ npm i commander chalk clipb

  • Node.js创建一个Express服务的方法详解

    本文实例讲述了Node.js创建一个Express服务的方法.分享给大家供大家参考,具体如下: 1.创建一个HttpServer服务端 在node.js官网下载好node的Windows版本后一路下一步安装好了node,新建一个server.js文件,开始第一个node文件.首先在文件开头需要使用require包含所需要的模块,然后利用http.createServer创建一个server,并执行回调函数.在回调函数内对请求req进行处理,并返回res结果. 利用url的parse方法将req请

  • 详解node.js创建一个web服务器(Server)的详细步骤

    前言 在 node.js 中创建一个服务器非常简单,只需要使用 node.js 为我们提供的 http 模块及相关 API 即可创建一个麻雀虽小但五脏俱全的web 服务器,相比 Java/Python/Ruby 搭建web服务器的过程简单的很. http model 要想创建一个基于 node.js 的 web 服务器,你就必须使用 node.js 提供的 http 模块,node.js 中的 http 接口旨在支持传统上难以使用的协议的许多特性, 特别是,大块的.可能块编码的消息,接口永远不会

  • 使用NODE.JS创建一个WEBSERVER(服务器)的步骤

    目录 什么是 nodejs 安装nodejs 如何使用node创建hello world? 如何使用nodejs读写文件 使用nodejs创建web服务器 如何根据不同的请求路径返回不同数据 将数据响应到前端 什么是 nodejs Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动.非阻塞式I/O模型, 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP.Python.

  • 如何利用node.js开发一个生成逐帧动画的小工具

    前言 在实际工作中我们已经下下来不下于一万个npm包了,像我们熟悉的 vue-cli,react-native-cli 等,只需要输入简单的命令 vue init webpack project,即可快速帮我们生成一个初始项目.在实际开发项目中,我们也可以定制一个属于自己的npm包,来提高自己的工作效率. 为什么要开发一个工具包? 减少重复性的工作,不再需要复制其他项目再删除无关代码,或者从零创建一个项目和文件. 根据交互动态生成项目结构和所需要的文件等. 减少人工检查的成本. 提高工作效率,解

  • 利用node.js写一个爬取知乎妹纸图的小爬虫

    前言 说起写node爬虫的原因,真是羞羞呀.一天,和往常一样,晚上吃过饭便刷起知乎来,首页便是推荐的你见过最漂亮的女生长什么样?,点进去各种漂亮的妹纸爆照啊!!!,看的我好想把这些好看的妹纸照片都存下来啊!一张张点击保存,就在第18张得时候,突然想起.我特么不是程序员么,这种手动草做的事,怎么能做,不行我不能丢程序员的脸了,于是便开始这次爬虫之旅. 原理 初入爬虫的坑,没有太多深奥的理论知识,要获取知乎上帖子中的一张图片,我把它归结为以下几步. 准备一个url(当然是诸如你见过最漂亮的女生长什么

  • Node.js创建HTTP文件服务器的使用示例

    HelloWorld示例只有演示意义,这次我们来搞一个实际的例子:文件服务器.我们使用Node.js创建一个HTTP协议的文件服务器,你可以使用浏览器或其它下载工具到文件服务器上下载文件. 为了读取文件,我们会用到File System模块(名字是"fs"),Stream,我们还要分析URL,区别HTTP方法,还会用到EventEmitter. 文件服务器FileServer的代码 先上代码吧,依然是简单的: // 引入http模块 var http = require("h

  • 使用Node.js实现一个简单的FastCGI服务器实例

    本文是我最近对Node.js学习过程中产生的一个想法,提出来和大家一起探讨. Node.js的HTTP服务器 使用Node.js可以非常容易的实现一个http服务,最简的例子如官方网站的示例: 复制代码 代码如下: var http = require('http');http.createServer(function (req, res) {    res.writeHead(200, {'Content-Type': 'text/plain'});    res.end('Hello Wo

  • 利用Node.JS实现邮件发送功能

    第一步.配置篇 首先需要安装nodemailer库 npm install nodemailer//默认会安装最新的版本. 关于这个库的文档参见nodemailer 第二步.库的一些使用介绍 这个库使用方法很简单的.首先是要创建一个用于发送邮件的实例 var transporter = nodemailer.createTransport(transport[, defaults]) transport参数属性 属性太多了就只写一些关键的属性 port:连接的端口号,一般就是465 host:你

  • 如何利用Node.js与JSON搭建简单的动态服务器

    一.创建html页面 创建4个页面,index.html.register.html.sign_in.html.home.html index.html 默认主页 register.html 用于注册账号 sign_in.html 用于登录账号 home.html 用于显示登录后的页面 主要代码片段 register.html <form id="registerForm"> <div> <label for="">用户名:<

随机推荐