@meyje/meyje-setup
Version:
🪄 MEYJE Setup: produtividade e organização desde o primeiro comando. Automatiza a criação de projetos Next.js 14 com as melhores práticas do mercado.
53 lines (48 loc) • 1.43 kB
JavaScript
/**
* Converte uma string para um slug válido para nomes de projeto
* @param {string} text - Texto a ser convertido
* @returns {string} - Slug válido
*/
export function slugify(text) {
return text
.toString()
.toLowerCase()
.trim()
// Remove acentos
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
// Remove caracteres especiais, mantĂ©m apenas letras, nĂşmeros e hĂfens
.replace(/[^a-z0-9\s-]/g, '')
// Substitui espaços por hĂfens
.replace(/\s+/g, '-')
// Remove hĂfens duplicados
.replace(/-+/g, '-')
// Remove hĂfens no inĂcio e fim
.replace(/^-+|-+$/g, '');
}
/**
* Valida se um nome de projeto é válido
* @param {string} projectName - Nome do projeto
* @returns {boolean} - Se é válido
*/
export function isValidProjectName(projectName) {
if (!projectName || projectName.trim().length === 0) {
return false;
}
// Verifica se contém apenas caracteres válidos
const validPattern = /^[a-zA-Z0-9\s-_]+$/;
return validPattern.test(projectName);
}
/**
* Normaliza o nome do projeto removendo espaços e caracteres especiais.
* @param {string} projectName - O nome do projeto.
* @returns {string} O nome do projeto normalizado.
*/
function normalizeProjectName(projectName) {
return projectName
.trim()
.toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^a-z0-9-]/g, '');
}
export { normalizeProjectName };