@tanstack/cli
Version:
TanStack CLI
25 lines (24 loc) • 1.04 kB
JavaScript
import { basename } from 'node:path';
import validatePackageName from 'validate-npm-package-name';
export function sanitizePackageName(name) {
return name
.toLowerCase()
.replace(/\s+/g, '-') // Replace spaces with hyphens
.replace(/_/g, '-') // Replace underscores with hyphens
.replace(/[^a-z0-9-]/g, '') // Remove invalid characters
.replace(/^[^a-z]+/, '') // Ensure it starts with a letter
.replace(/-+/g, '-') // Collapse multiple hyphens
.replace(/-$/, ''); // Remove trailing hyphen
}
export function getCurrentDirectoryName() {
return basename(process.cwd());
}
export function validateProjectName(name) {
const { validForNewPackages, validForOldPackages, errors, warnings } = validatePackageName(name);
const error = errors?.[0] || warnings?.[0];
return {
valid: validForNewPackages && validForOldPackages,
error: error?.replace(/name/g, 'Project name') ||
'Project name does not meet npm package naming requirements',
};
}