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をインストールする方法

推薦する

React+Ant Design開発環境をセットアップするための実装手順

基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...

WebページのレイアウトではIE6の互換性の問題を考慮する必要があります

下の図は、当社のウェブサイト統計システムの訪問者詳細におけるブラウザ閲覧率を示しており、IE6 が ...

mysql サブクエリと結合テーブルの詳細

目次1. サブクエリとは何ですか? 2. 自己結合3. 自然な結合4. 外部接続1. サブクエリとは...

Linux の Docker コンテナで bash を終了する 2 つの方法

bash を終了する場合は、次の 2 つのオプションがあります。最初のもの: Ctrl + d を押...

CSS で画像アダプティブ コンテナを実装するいくつかの方法 (要約)

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...

MIME エンコーディングの概要 (オンライン情報と実際の経験から統合)

1. MIME: 多目的インターネットメール拡張インペリアル カレッジ オブ コンピュータ オンラ...

要素の幅(高さ)の適応を実現するCSSおよびCSS3の柔軟なボックスモデル

1. CSSは左の固定幅と右の適応幅を実現します1. ポジショニング <!DOCTYPE ht...

CSS 属性値 clear:right が機能しない理由の詳細

clear プロパティを使用してフロートをクリアすることはよくあることであり、clear プロパティ...

17 個の JavaScript ワンライナー

目次1. DOMとBOM関連1. 要素にフォーカスがあるかどうかを確認する2. 要素の兄弟ノードをす...

Reactソースコードにおけるビット演算について詳しく説明します

目次序文いくつかの一般的なビット操作ビットAND (&)ビットOR (|)ビット否定(~)マ...

セマフォによるTomcatの異常終了の解決方法

最近はビッグデータで遊んでいます。友人が私のところに来て、オンラインの Tomcat が不可解に終了...

Vue3 リストインターフェースデータ表示の詳細

目次1. リストインターフェースの表示例2. データを表示する2.1. コンポーネントがリストに表示...

Navicat 8でMySQL用のデータベースを作成する方法

ウェブサイトを開発する場合、データを保存するためにデータベースを使用する必要があることがよくあります...

DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

質問docker で gdb を実行すると、ブレークポイントに到達しますが、ブレークポイントに入るこ...

Win10 構成 Tomcat 環境変数チュートリアル図

設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...