Existe-t-il un outil qui convertit css en less.css?


21

J'ai un assez gros fichier CSS, que je veux convertir en moins. Quand j'ai écrit le CSS, je ne connaissais pas less.css, mais maintenant je veux toujours utiliser mon ancien CSS.

Existe-t-il un outil qui peut m'aider à le convertir automatiquement?


voir mes modifications ci-dessous.
fatnjazzy

Vous devriez vérifier la réponse de @Simone Carletti et peut-être développer ce que vous demandez vraiment un peu. Il se peut qu'aucune "conversion" réelle ne soit nécessaire, si ce n'est renommer votre fichier.
Di

Intéressant, mais je me demande s'il vaut la peine d'ajouter 33 Ko de code JS (less.js) afin de réduire la taille des fichiers CSS.
Marco Demaio

1
Je n'utilise évidemment pas le compilateur JavaScipt. Et la taille du CSS n'est pas la raison pour laquelle je l'utilise. La maintenabilité est la raison. :)
js-coder

Réponses:



15

En fait, vous n'avez besoin d'aucun outil de conversion pour commencer à travailler avec LESS. La syntaxe LESS est rétrocompatible avec CSS . Cela signifie que tout fichier CSS est également un fichier MOINS valide.

Obtenez simplement votre CSS et renommez-le en fichier MOINS. Utilisez ensuite des fonctionnalités spécifiques à LESS avec vos modifications. Plus vous mettrez à jour le fichier, plus vous pourrez utiliser MOINS de fonctionnalités.

J'ai fait de même pour SCSS et un très gros projet avec 10 fichiers CSS. Il était presque impossible (et une énorme perte de temps) de réécrire tous les CSS avec SCSS. Je l'ai simplement renommé, puis à chaque fois que je travaillais sur le fichier CSS, j'exécutais un petit refactoring sur le code pour profiter des mixins, des variables et ainsi de suite.


Cela soulève un très bon point. Les réponses semblent si loin pour se concentrer sur la partie de la question de « convertir », en faisant mixins, etc. , et pas seulement si le fichier actuel peut être utilisé dans un commutateur de flux de travail moins.
Su '

6

Avez-vous regardé le moins? C'est beaucoup mieux pour convertir CSS que Lessify. En particulier, Lessify n'optimise pas très bien vos classes. Il a copié le navigateur réinitialise tous ses mixins générés, créant des attributs redondants. Il est clair que c'est encore au stade expérimental. Aucun des utilitaires ne peut déterminer la sémantique, ils ne peuvent donc pas convertir les valeurs en expressions, vars ou mixins paramétriques.

Le moins fait un meilleur travail d'optimisation et semble être plus fonctionnel. Il gère même les pseudoclasses pour vous:

http://toki-woki.net/p/least/

Ces outils sont idéaux pour travailler avec de gros fichiers CSS préexistants. Voici les étapes que je recommande pour convertir CSS en MOINS (assurez-vous de conserver une copie des fichiers CSS d'origine):

  1. Si vous travaillez avec plusieurs fichiers CSS additifs, fusionnez-les en un seul fichier CSS. Cela garantit que tout est LESSied et optimisé ensemble.

  2. Exécutez le code CSS résultant via un utilitaire de nettoyage CSS en ligne. J'ai eu de bons résultats avec cleancss: http://www.cleancss.com/ . Cela supprimera tout balisage superflu et redondant qui pourrait ne pas être détecté par un convertisseur MOINS.

  3. Supprimez @Media et tous les réinitialisations de style que vous avez dans le fichier CSS. Ils peuvent créer des problèmes ou introduire des redondances possibles. C'est probablement une bonne idée de conserver les réinitialisations dans un fichier séparé.

  4. Collez le fichier CSS résultant dans Least et observez la bête.

  5. Réintroduisez vos réinitialisations et @screen.

  6. Maintenant que vous avez terminé, parcourez chacun des attributs et trouvez de bons candidats pour la refactorisation et transformez-les en MOINS variables et expressions. Les attributs de couleur et de police CSS sont les plus faciles à prendre en compte, la recherche globale simple et le remplacement fonctionnent correctement. À la fin, vous pouvez décider si vous souhaitez diviser le fichier unique en fichiers logiques plus petits. Vous pouvez constater que le processus vous oblige à réorganiser vos fichiers d'une manière différente.

Je ne suis pas l'auteur de Least, juste quelqu'un qui cherche un outil similaire et a décidé d'en parler au monde.


Ces convertisseurs ne comprennent- @importils pas ? Je pensais que LESS était capable d'analyser les @importinstructions et de consolider toutes vos feuilles de style en un seul CSS lorsque vos fichiers LESS sont compilés. Il semble que le dumping de tous vos CSS soigneusement organisés dans une seule feuille de style géante afin de le convertir en MOINS serait un pas en arrière pour la maintenabilité.
Lèse majesté

Ils le font, mais gardez à l'esprit que ces outils existent en ligne, vous devez donc les couper et les coller dans un champ de texte pour qu'il n'ait pas accès à vos feuilles de style externes.
Joel Rodgers

Ah, je n'ai pas vraiment cliqué sur les liens. J'avais supposé qu'il s'agissait d'outils de bureau. Cela a alors du sens.
Lèse majesté

5

Je ne pense pas qu'il existe un moyen pour un convertisseur de savoir ce que vous voulez faire avec une grande partie du code.

Par exemple, il ne saurait pas nécessairement quelles variables vous souhaitez utiliser. Ou comment générer des mixins ou des fonctions.

Je pense qu'avec celui-ci, vous devrez le faire manuellement.


D'accord. Il y a une certaine inférence et connaissance de votre intention requise ici que les ordinateurs ne sont tout simplement pas très adaptés. Vous pourrez automatiser certaines tâches (voir le lien de @dotweb) et peut-être consolider des choses comme les valeurs de couleur en une seule variable, mais c'est probablement à ce sujet.
Su '

Oui, mais la conversion de LESS à CSS est une conversion de 1 à 1, donc il existe théoriquement un algorithme qui peut créer du code LESS optimisé à partir de CSS ... Quelqu'un a juste besoin de l'écrire.
trusktr

Les mixins peuvent aller dans les deux sens, car il est facile pour l'ordinateur de collecter et de regrouper les sélecteurs et de les imbriquer. Heureusement, c'est la partie la plus fastidieuse de la conversion et c'est calculable (voir ma réponse). Quoi qu'il en soit, étant donné la nature en cascade du CSS, il peut être différent du CSS d'origine. Les variables et les expressions sont impossibles. Les ordinateurs ne peuvent pas déterminer l'intention ou la sémantique. Comment un ordinateur peut-il comprendre que la largeur: 400 en CSS est en fait largeur: largeur de page / 2 en MOINS? Il serait possible pour un convertisseur de convertir les couleurs et les polices en variables.
Joel Rodgers

@JoelRodgers, pourquoi la nature en cascade du CSS implique-t-elle que les "décompilateurs" seront bogués? (Évidemment, un décompilateur peut être bogué, mais en principe, il n'est pas difficile de dire si une réorganisation des termes changera la sémantique).
Peter Taylor

Je parle des déclarations de classe et des attributs. Vous devez les déclarer dans le même ordre exact, sinon vous obtiendrez des résultats différents. Mauvaise erreur, je parlais de règles imbriquées au lieu de mixins.
Joel Rodgers

3

Que diriez-vous de rechercher et de remplacer.

si vous l'avez color:#ffffffet que vous souhaitez le changer en@color

il suffit de rechercher color:#ffffffou de color : #ffffffremplacer par @color.

Je ne fais généralement pas confiance à ces outils.

ou vous pouvez écrire un script PHP très simple qui le gère.

Mise à jour 1 :
Ou vous pouvez utiliser le http://nex-3.com/posts/96-scss-sass-is-a-css-extension qui est similaire à less et il a un outil de conversion.


Oui, j'y ai déjà pensé. Mais c'est un assez gros fichier, donc je veux m'assurer que ce sera le moyen le plus simple. ;) Pensez aux mixins etc.

ou vous pouvez écrire un script PHP très simple qui le gère.
fatnjazzy

1
Vous ne pourrez pas trouver un outil qui convertit de manière fiable du CSS pur en utilisant moins de mixins.
Alex

Tu as raison. Les variables automatiques et le mixage sont insensés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.