77 votes

Implémentation de SASS pour Java ?

Je recherche une implémentation de SASS en Java (qui pourrait être utilisée avec JSP/JSF). Pour Python, j'ai trouvé CleverCSS, mais il n'y a rien pour Java. Quelqu'un a-t-il entendu parler de ce genre d'outil pour générer des CSS ?

3 votes

SASS/SCSS est développé en Ruby. Pour bénéficier des meilleures et des plus récentes fonctionnalités, il est préférable d'utiliser Ruby plutôt qu'une implémentation native en Java. Une implémentation native sera également en retard sur les dernières nouveautés.

5 votes

@Joepie, Avoir moins de dépendances est plus important pour moi que d'avoir la dernière version. SASS/SCSS tel qu'il est actuellement est assez bon pour mes besoins. Je veux juste un moyen léger de l'utiliser.

2 votes

Par ailleurs, le fait qu'une application ne soit pas "native" ne signifie pas automatiquement qu'elle sera obsolète. La traduction automatique pourrait être utilisée, ou un développeur enthousiaste pourrait la maintenir à jour.

49voto

Joepie Points 1483

Avec ANT :

  1. Télécharger le fichier jar complet de JRuby ( Page de téléchargement de JRuby Complete jar )
  2. Télécharger le dernier code HAML/SASS ( L'archive HAML/SASS ) et l'extraire. Mettez-le dans "/libs/sass-[VERSION]"
  3. Ajoutez ce qui suit à un fichier de compilation ant.
  4. Remplacer [VERSION] dans le script par les versions correspondantes de JRuby et SASS
  5. Lancez le ant script, et les fichiers sass ou scss seront compilés !

    <path id="JRuby"> <fileset file="libs/jruby-complete-[VERSION].jar"/> <!-- Location of JRuby jar file --> </path>

    <target name="compileSCSS"> <echo message="Compiling scss files..." /> <property name="filesIn" value="${dir.css}/scss/*/[^_].scss" /> <property name="fileOutDir" value="/${dir.css}/${dir.css.build}" /> <script language="ruby" classpathref="JRuby"> <![CDATA[ require 'libs/sass-[VERSION]/lib/sass' require 'sass/exec'

            files = Dir.glob($project.getProperty('filesIn'))
            Dir.mkdir($project.getProperty('fileOutDir')) unless File.exists?($project.getProperty('fileOutDir'))
            files.each do 
                | file |
                puts "     [sass compiler] " + file + " -> " + $project.getProperty('fileOutDir') + "/" + File.basename(file, ".*") + ".css"
                opts = Sass::Exec::Sass.new(["--load-path", File.dirname(file), file, File.join($project.getProperty('fileOutDir'), File.basename(file, ".*") + ".css")])
                opts.parse
            end
        ]]>
    </script>
    <echo message="Done compiling scss files!" />

    </target>

Avec MAVEN :

Maven peut également le faire : En utilisant le plugin antrun :

<project>
<build>
<plugins>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>compileAndMinify</id>
            <phase>compile</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <mkdir dir="${project.build.directory}/compiled" />

                    <echo message="Compiling scss files..."/>
                    <path id="JRuby">
                        <fileset file="${basedir}/jars/jruby-complete-[VERSION].jar"/>
                    </path>
                    <property name="filesIn" value="${project.build.directory}/css/**/[^_]*.scss" />
                    <property name="fileOutDir" value="${project.build.directory}/compiled/css" />
                    <script language="ruby" classpathref="JRuby">
                        <![CDATA[
                            require 'libs/sass-[VERSION]/lib/sass'
                            require 'sass/exec'

                            files = Dir.glob($project.getProperty('filesIn'))
                            Dir.mkdir($project.getProperty('fileOutDir')) unless File.exists?($project.getProperty('fileOutDir'))
                            files.each do 
                                | file |
                                puts "     [sass compiler] " + file + " -> " + $project.getProperty('fileOutDir') + "/" + File.basename(file, ".*") + ".css"
                                opts = Sass::Exec::Sass.new(["--load-path", File.dirname(file), file, File.join($project.getProperty('fileOutDir'), File.basename(file, ".*") + ".css")])
                                opts.parse
                            end
                        ]]>
                    </script>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>
</plugins>
</build>
</project>

0 votes

Est-ce également possible via Maven ?

0 votes

Où extraire l'archive haml/sass ? Dois-je la mettre dans les gemfiles pour JRuby ou puis-je les référencer directement d'une manière ou d'une autre ? C'est-à-dire, sans utiliser le programme d'installation de JRuby, juste l'archive. Merci de votre compréhension.

0 votes

La première exigence "require 'libs/sass/lib/haml'" est le chemin relatif au dossier de votre projet.

19voto

Tom Yeh Points 956

ZUSS est une bonne alternative à LESS et SASS. Il est similaire à LESS. Contrairement à LESS et SASS, le traitement des fichiers ZUSS ne nécessite pas l'utilisation de l'interpréteur JavaScript.

Clause de non-responsabilité : je suis le développeur de ZUSS. Je l'ai développé simplement parce que je n'ai pas trouvé de solution propre pour Java.

0 votes

IMO, Zuss est le mieux adapté à l'environnement Java, tel que l'invocation de méthodes Java, le résolveur de variables et le localisateur de ressources.

0 votes

Wow, belle solution. J'y penserai pour mes futurs projets Java ! C'est vraiment bien. Avez-vous plus d'informations sur la mise en cache lors de l'utilisation de la servlet ? La documentation n'est pas claire à ce sujet... Quelle est la rapidité de l'étape de compilation lors de l'utilisation de la servlet ?

1 votes

Le servlet par défaut ne fournit pas de cache. Si vous le souhaitez, vous pouvez l'étendre.

14voto

golimpio Points 501

Il y a un projet : http://code.google.com/p/jsass/ (mais il n'en est qu'à ses débuts).

Si vous êtes intéressé par Less, il existe une version Java prête à l'emploi : http://www.asual.com/lesscss/

0 votes

Je ne dis cela que dans l'intérêt de plus d'informations, le projet ci-dessus utilise rhino pour exécuter un fichier javascript.

3 votes

Jsass ressemble à un logiciel abandonné. Upvoted for asual's lesscss-servlet

10voto

legzo Points 91

Vous pouvez également consulter Optimiseur de ressources Web 4 J (WRO4J) qui permet beaucoup de choses (minification, fusion de ressources) et supporte Less CSS (à l'exécution pour autant que je sache).

Cela signifie que vous ajoutez le filtre wro4j à votre fichier web.xml et que lorsque vous demandez un CSS, vos fichiers .scss (ou .saas) sont compilés en CSS standard.

Je ne l'ai pas encore utilisé, mais il semble plus avancé que les autres produits listés ici.


En fait, je lisais des commentaires sur le site web Less for Java ( http://www.asual.com/lesscss/ ) et WRO4J utilise cette bibliothèque pour fournir sa "compilation Less à la volée". Je pense donc que Less pour Java est la voie à suivre.

5voto

ChssPly76 Points 53452

Personnellement, je trouve la syntaxe de SASS profondément, horriblement ennuyeuse. Pour les gens de Ruby / Python, c'est peut-être une seconde nature ; pour moi, qui suis un gars de Java, pas tellement. I fortement préférer MOINS qui s'appuie sur la syntaxe CSS au lieu d'en créer une nouvelle. Cela présente l'avantage supplémentaire de pouvoir utiliser vos fichiers CSS existants "tels quels" et d'y incorporer les fonctionnalités de LESS si nécessaire.

Cela dit, ni SASS ni LESS n'ont de portage Java à ma connaissance. Les deux sont basés sur ruby, cependant, donc vous pouvez les installer sous JRuby . Le seul problème avec cette approche est que JRuby est incroyablement lent à démarrer. Ce n'est pas un problème majeur, cependant, parce que vous allez probablement utiliser la surveillance des fichiers dans le développement (et une fois qu'il démarre, il fonctionne très bien) et vous n'allez pas vous soucier que votre construction prenne quelques secondes de plus lors du déploiement.

Il existe également des implémentations basées sur PHP, telles que MoinsPhp , xCSS et autres. Je ne les ai pas essayés personnellement.

3 votes

La syntaxe de Sass a été allégée : Elle s'apparente désormais à celle de CSS, sans les crochets. La prochaine version de Sass autorisera les crochets optionnels. L'un des avantages de Sass est que le compilateur et les outils sont bien plus matures que leurs homologues de Less. IntelliJ 9 supporte Sass (installez le plugin Ruby pour l'obtenir). Nous sommes passés de Less à Sass principalement pour le support de l'éditeur. L'outil css2sass facilite grandement la conversion des fichiers css - il imbrique également les sélecteurs lorsque c'est possible. Nous avons converti un grand projet et n'avons rencontré aucun problème.

0 votes

Je déteste aussi la syntaxe sass. Elle est censée être plus facile à visualiser, mais les accolades me facilitent la tâche.

10 votes

Par ailleurs, il existe maintenant la syntaxe SCSS qui utilise des accolades.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X