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

推薦する

体験をデザインする: ボタンには何があるか

<br />最近、UCDChina は「インターフェース上のテキストに注意を払う」という...

MySQL データベースの基礎: 基本コマンドの概要

目次1. ヘルプ情報を使用する2. データベースの作成、削除、表示3. データベースに接続する4. ...

Vueライフサイクルの違いの詳細な説明

ライフサイクル分類vue の各コンポーネントは独立しており、各コンポーネントには独自のライフサイクル...

CentOS 7.5 に Docker をインストールする詳細なチュートリアル

Docker入門Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテ...

Mysql マスタースレーブレプリケーションの注意事項の説明

1. マスター'x@xxxx:x'への接続エラー- 再試行時間: 60 再試行回数:...

altとtitleの違いの詳しい説明

これら 2 つの属性はよく使用されますが、その違いはまとめられていません。それでは、その使い方をまと...

MySQLのスイッチングデータ保存ディレクトリの実装方法

MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...

Windows 10 の Docker で countly-server を展開して実行するプロセス

私は最近countlyに触れて、慣れてきました。私は、必要に応じてcountlyのクラッシュプラグイ...

MySQL 結合テーブルクエリの基本操作 左結合のよくある落とし穴

概要中小規模のプロジェクトでは、特にレポートを作成するときに、結合テーブル クエリが非常に一般的な操...

MySQL 接続クエリを本当に学びましたか?

1. 内部結合クエリの概要内部結合は、アプリケーションで非常に一般的な結合操作であり、通常はデフォ...

Vue パッケージ化後の空白ページの解決策

1. vue-cli がプロジェクト パッケージを作成した後にページが空白になる問題の解決方法コマン...

マインスイーパゲームを実装するための jQuery プラグイン (1)

この記事では、jQueryプラグインを使用したマインスイーパゲームの最初の記事の具体的なコードを参考...

CentOS7 で jar アプリケーションの起動を設定する方法

プロジェクトの展開中に遭遇した落とし穴Zhihudemo を展開する際、Jenkins などの自動展...

Dockerアーキテクチャ入門

Docker には 3 つの基本概念が含まれています。イメージ: Docker イメージはルート フ...