Node.js を使用してパスワード ジェネレータを作成するための完全な手順

Node.js を使用してパスワード ジェネレータを作成するための完全な手順

1. 準備

1.1 プロジェクトを作成する

$ npm 初期化 

1.2 インストールの依存関係

$ npm i コマンダー チョーク クリップボード

1.3 エントリファイルindex.jsを作成する

process.argvを見てみましょう

// インデックス.js
コンソール.log(プロセス.argv)

端末実行コマンド

$ ノードインデックス

ターミナルでは

process.argv プロパティは、Node.js プロセスの開始時に渡されたコマンドライン引数を含む配列を返します。 最初の要素は process.execPath になります。 2 番目の要素は、実行される JavaScript ファイルへのパスになります。 残りの要素は追加のコマンドライン引数になります。

コマンドを実行

$ ノードインデックス生成

3番目のパラメータ: generate

2. コマンドラインの記述

2.1 バージョンと説明を追加する

// インデックス.js
const プログラム = require('commander');
program.version('1.0.0').description('シンプルなパスワードジェネレーター').parse()

ターミナル実行コマンド:passgenの説明を見ることができます

コマンドの実行を続けると、passgenのバージョンが表示されます。

2.2 パスワードの長さを設定するコマンド

const プログラム = require('commander');

program.version('1.0.0').description('シンプルなパスワードジェネレーター')
program.option('-l --length <数値>', 'パスワードの長さ').parse()
コンソールログ(プログラム.opts())

ターミナル実行コマンド:passgenのパスワード長コマンドを確認できます

端末実行コマンド:

2.2 パスワードの長さのデフォルト値を追加: 8

program.option('-l --length <number>', 'パスワードの長さ', '8').parse()
コンソールログ(プログラム.opts())

ターミナル実行コマンド: パスワードの長さを設定しないでください。デフォルト値の-8が使用されていることがわかります。

ターミナル実行コマンド: パスワードの長さを10に設定する

2.3 パスワード保存コマンドの設定

program.option('-l --length <数値>', 'パスワードの長さ', '8')
.option('-s --save', 'パスワードをpassword.txtに保存する').parse()

2.4 パスワード形式の設定: 数字なし

.option('-nn --no-number', '数字を削除').parse()

ターミナル実行コマンド: デフォルトでは、数字があります

端末実行コマンド: デジタルパスワードの設定とクリア

2.5 設定パスワードの形式: 記号なし

.option('-ns --no-symbols', 'シンボルを削除する').parse()

ターミナル実行コマンド: デフォルトではシンボルがあります

端末実行コマンド: デジタルパスワードの設定とクリア

3. コマンドラインの解析 - パスワードの作成

// インデックス.js
const プログラム = require('commander');
const createPassword = require('./utils/createPassword')
定数ログ = console.log

program.version('1.0.0').description('シンプルなパスワードジェネレーター')
プログラム
.option('-l --length <数値>', 'パスワードの長さ', '8')
.option('-s --save', 'パスワードをpassword.txtに保存します')
.option('-nn --no-numbers', '数字を削除')
.option('-ns --no-symbols', 'シンボルを削除する').parse()

const {長さ、保存、数値、シンボル} = program.opts()

// 生成されたパスワードを取得する
const generatedPassword = createPassword(長さ、数字、記号)

// 生成されたパスワードを出力する

ログ(生成されたパスワード)

utils/createPassword.js を作成する

// パスワードを作成.js
定数アルファ = 'qwertyuiopasdfghjklzxcvbnm'
定数数値 = '0123456789'
定数シンボル = '!@#$%^&*_-=+'


const createPassword = (長さ = 8、数値を持つ = true、シンボルを持つ = true) => {
    chars = alpha とします
    hasNumbers ? (文字 += 数字): ''
    hasSymbols ? (文字 += シンボル): ''
    generatePassword(長さ、文字数)を返す
}

const generatePassword = (長さ, 文字数) => {
    パスワード = ''
    for(let i = 0; i < 長さ; i++){
        パスワード+= chars.charAt(Math.floor(Math.random()*chars.length))
    }
    パスワードを返却
}
module.exports = パスワードを作成

ターミナル実行コマンド: パスワード生成の表示

3.1 色の追加

// インデックス.js
const チョーク = require('チョーク');
log(chalk.blue('生成されたパスワード: ') + chalk.bold(generatedPassword))

ターミナルはコマンドを実行します: 色が変わるのがわかります

3.2 クリップボードを追加

// インデックス.js
定数 clipboardy = require('clipboardy');
// クリップボードにコピー
clipboardy.writeSync(生成されたパスワード)
log(chalk.yellow('パスワードがクリップボードにコピーされました!'))

4. パスワードを対応するファイルに保存します

// インデックス.js
const savePassword = require('./utils/savePassword')
// ファイルに保存
if (save) savePassword(generatedPassword)

utils/savePassword.js を作成する

定数 fs = require('fs')
定数パス = require('path')
定数os = require('os')
const チョーク = require('チョーク')

const savePassword = (パスワード) => {
    fs.open(path.join(__dirname, '../', 'passwords.txt'), 'a', '666', (e, id) => {
        fs.write(id, パスワード + os.EOL, null, 'utf-8', ()=>{
            fs.close(id, ()=>{
                console.log(chalk.green('パスワードがpasswords.txtに保存されました'))
            })
        })
    })
}

module.exports = パスワードを保存

ターミナルでコマンドを実行します。プロジェクト内にpasswords.txtファイルが生成され、パスワードが正常に保存されていることがわかります。

5. ローカルnpmモジュールをグローバルpassgenとして設定する

// パッケージ.json
  「preferGlobal」:true、
  "bin":"./index.js",

端末実行コマンド:

npm link コマンド: ローカル モジュールのデバッグとテストを容易にするために、npm モジュールを対応する実行中のプロジェクトにリンクします。

//index.js
#!/usr/bin/env node //最初の行を追加

端末実行コマンド:

要約: 完了しました ✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️

参考リンク: nodejs.cn/api/process…

要約する

Node.js を使用してパスワード ジェネレーターを作成する方法についての記事はこれで終わりです。Node.js パスワード ジェネレーターの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQL レプリケーション メカニズムの原理の説明

>>:  dockerでredis5.0.3をインストールする方法

推薦する

Vue スキャフォールディング プロジェクトを作成するための詳細な手順

vue スキャフォールディング -> vue.cli大規模で完全に機能する Vue プロジェク...

Axios の二次カプセル化の例 プロジェクトのデモ

1. なぜパッケージングを行うのですか?全体的なコード呼び出し、リクエストの公開処理、パーソナライズ...

Docker コンテナの正常なシャットダウン前にトラップを使用して環境のクリーンアップを実行する

実行中のコンテナが終了したときに、コンテナが完全に終了する前に環境をクリーンアップするなど、いくつか...

Select はダブルクリック dbclick イベントをサポートしていません

XML/HTML コードコンテンツをクリップボードにコピー< div クラス= "c...

1つのコマンドで、シェルの読み取りコマンドの共通パラメータを理解できます。

Shell で受信パラメータを受信する方法は 2 つあることがわかっています。 1 つはスクリプト...

Docker インストール rocketMQ チュートリアル (最も詳細)

RocketMQ は、Alibaba が設計した分散型のキューベースのメッセージング ミドルウェア...

MySQL の 3 つの Binlog 形式の概要と分析

1つ。 Mysql Binlog フォーマットの紹介 Mysql binlog ログには、State...

一般的な docker コマンドの概要 (推奨)

1. 要約:一般的に、次のカテゴリに分類できます。 Docker 環境情報 — docker [i...

Bツリーの削除プロセスの紹介

前回の記事 https://www.jb51.net/article/154157.htm では、B...

MySQL で準備、実行、割り当て解除ステートメントを使用するチュートリアル

序文MySQLでは、準備、実行、割り当て解除を正式にはPREPARE STATEMENTと呼びます。...

MySQL IDは1から増加し始め、不連続IDの問題を素早く解決します

mysql idは1から始まり、不連続なidの問題を解決するために自動的に増加します。強迫性障害の私...

初心者向け入門チュートリアル④:サブディレクトリのバインド方法

これが何を意味するのかを理解するには、まずサブディレクトリとは何かを知る必要があります。では、サブデ...

HTML割引価格計算の実装原理とスクリプトコード

コードをコピーコードは次のとおりです。 <!DOCTYPE HTML PUBLIC "...