webpack-serve-certificate-creator
Version:
webpack plugin to generate SSL certificate for local development
34 lines (33 loc) • 1.26 kB
JavaScript
import assert from 'node:assert';
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
import { generate } from 'selfsigned';
export function createCertificate(options) {
const selfSignedOptions = {
...options.options,
days: options.options?.days || 30,
keySize: options.options?.keySize || 2048,
};
return generate([
{
name: 'commonName',
value: options.commonName,
},
], selfSignedOptions);
}
export function getCertificate(options, context) {
try {
const data = readFileSync(context.dataPath, 'utf-8');
assert(data, `${context.dataPath} does not exist or is empty`);
context.logger.debug(`Certificate data loaded from ${context.dataPath}`);
return JSON.parse(data);
}
catch (error) {
context.logger.debug(error);
mkdirSync(context.cacheDirectory, { recursive: true });
context.logger.debug(`Certificate cache directory created: ${context.cacheDirectory}`);
const certificate = createCertificate(options);
writeFileSync(context.dataPath, JSON.stringify(certificate));
context.logger.debug(`Certificate data written to ${context.dataPath}`);
return certificate;
}
}