pwgen
A password generator compiled as Wasm for use on the CLI, in a custom element, or as a module.
Use with the CLI on Mac, Windows, and Linux
With npx
npx pwgen -sy 20 1
With npm, as a global package
npm i -g pwgen
pwgen -sy 20 1
With wapm
wapm install kherrick/pwgen
wapm run pwgen -sy 20 1
Use in HTML (demo)
<x-pwgen
composed
flags="-sy"
length="20"
number="1"
></x-pwgen>
<script type="module">
import 'https://unpkg.com/pwgen'
document.addEventListener(
'x-pwgen-handle-password',
({ detail }) => {
console.log(detail.msg)
}
)
</script>
Use in React
npm i pwgen
import React from 'react';
import 'pwgen';
const App: React.FC = () => {
return (
<x-pwgen></x-pwgen>
)
}
Use in Angular
npm i pwgen
Within the component:
import { Component, OnInit } from '@angular/core';
import { pwgen } from 'pwgen';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
password: string = '';
ngOnInit() {
pwgen({
arguments: ['-sy', '20', '1'],
print: (password: string) => (
this.password = password
),
});
}
}
Within the template:
<ng-container>{{ password }}</ng-container>
Use in Node.js
npm i pwgen
const pwgen = require('pwgen')
const flags = '-1sy'
const length = '20'
const number = '10'
pwgen({
arguments: [ flags, length, number ],
print: stdout => {
console.log(`Password: ${stdout}`)
}
})
Test the experimental web bundle
Download pwgen.wbn
Read more about web packaging
Develop
Requirements
Clone the project and submodules
git clone https://github.com/kherrick/pwgen \
&& cd pwgen \
&& git submodule update --init --recursive
Start
npm start
Build
npm run build
Get Help
Show command line usage and available options (flags):
npx pwgen --help
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]
Options supported by pwgen:
-c or --capitalize
Include at least one capital letter in the password
-A or --no-capitalize
Don't include capital letters in the password
-n or --numerals
Include at least one number in the password
-0 or --no-numerals
Don't include numbers in the password
-y or --symbols
Include at least one special symbol in the password
-r <chars> or --remove-chars=<chars>
Remove characters from the set of characters to generate passwords
-s or --secure
Generate completely random passwords
-B or --ambiguous
Don't include ambiguous characters in the password
-h or --help
Print a help message
-H or --sha1=path/to/file[#seed]
Use sha1 hash of given file as a (not so) random generator
-C
Print the generated passwords in columns
-1
Don't print the generated passwords in columns
-v or --no-vowels
Do not use any vowels so as to avoid accidental nasty words