Yeoman prompt: comment générer un nom de fichier valide à partir d’une chaîne?

Existe-t-il une méthode implémentée dans Yeoman ou dans Node pour générer un nom de fichier valide à partir d’une chaîne?

Mon but est de remplacer les lettres accentuées par des lettres normales, les espaces par des tirets, etc.

En gros, tout ce dont vous avez besoin est une fonction qui supprime les caractères spéciaux et les remplace éventuellement par un système arbitraire.

Une option a déjà été nommée par passy, ​​qui consiste à utiliser:

this._.dasherize(str) 

Néanmoins, vous pouvez utiliser certaines options supplémentaires. Par exemple, vous pouvez consulter le module underscore.ssortingng , qui fournit certaines fonctions pour cela. slugify ceux-ci, je recommanderais fortement la fonction slugify :

De la documentation :

Transformez le texte en slug d’URL. Remplace les espaces, les caractères accentués et les caractères spéciaux par un tiret.

Pour donner un exemple:

 _.slugify("Un éléphant à l'orée du bois") => 'un-elephant-a-loree-du-bois'; 

Cela devrait être exactement ce dont vous avez besoin, tout en conservant une bonne lisibilité.

J’espère que cela t’aides.

Pour les générateurs Yeoman, la façon habituelle de gérer cela consiste à utiliser this._.dasherize(str) dans le code du générateur JavaScript ou <%= _.dasherize(str) %> dans les modèles. Il ne prend pas en charge les lettres accentuées, mais celles-ci doivent quand même être des noms de fichiers valides.

 console.log(this._.dasherize("some userProvided ssortingng")); // output: "some-user-provided-ssortingng"