web-dev-qa-db-fra.com

Implémentation SASS pour Java?

Je cherche une implémentation SASS dans Java (pourrait être utilisé avec JSP/JSF). Pour Python j'ai trouvé CleverCSS, mais il n'y a rien pour Java. Quelqu'un a entendu parler de ce type d'outil pour générer du CSS?

73
user213225

Avec ANT:

  1. Télécharger le fichier jar complet JRuby ( page de téléchargement du jar JRuby Complete )
  2. Téléchargez le dernier code HAML/SASS ( tarball HAML/SASS ) et extrayez-le. Mettez-le dans "/ libs/sass- [VERSION]"
  3. Ajoutez ce qui suit à un fichier de génération de fourmis.
  4. Remplacez [VERSION] dans le script par les versions correspondantes de JRuby et SASS
  5. Exécutez le script ant 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>  
48
Joep

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'interpréteur JavaScript.

Avertissement: je suis le développeur de ZUSS. Je l'ai développé simplement parce que je ne trouve pas de solution soignée pour Java.

18
Tom Yeh

Il y a un projet: http://code.google.com/p/jsass/ (mais c'est à un stade très précoce).

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

14
Gilberto Olimpio

Vous pouvez également jeter un œil à Web Resource Optimizer 4 J (WRO4J) qui permet beaucoup de choses (minification, fusion de ressources) et prend en charge moins de CSS (au moment de l'exécution pour autant que je sache).

Cela signifie: vous ajoutez le filtre wro4j à votre web.xml et 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 répertoriés ici.


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

10
legzo

Saviez-vous que le framework Web Vaadin est livré avec son propre compilateur Sass intégré? Voir https://vaadin.com/blog/-/blogs/state-of-sass-support-in-vaadin-7-today ...

7
vorburger

Personnellement, je trouve la syntaxe SASS profondément, horriblement ennuyeuse. Pour Ruby/Python foule cela peut venir comme une seconde nature; pour moi comme Java guy - pas tellement. Je fortement préférez MOINS qui s'appuie sur la syntaxe CSS au lieu de proposer une nouvelle Cela a l'avantage supplémentaire de pouvoir utiliser vos fichiers CSS existants "tels quels" et d'incorporer MOINS de fonctionnalités selon les besoins.

Cela dit, ni SASS ni LESS n'ont de ports Java pour autant que je sache. Cependant, les deux sont basés sur Ruby, vous pouvez donc les installer sous JRuby . Le seul problème avec cette approche est que JRuby est incroyablement lent à démarrer. Ce n'est pas une grosse affaire, car vous allez probablement utiliser la surveillance des fichiers en développement (et une fois qu'il démarre, il fonctionne très bien) et vous êtes ne se souciera pas autant que votre build prenne quelques secondes de plus pendant le déploiement.

Il existe également des implémentations basées sur PHP comme LessPhp , xCSS et d'autres. Je ne les ai pas essayés personnellement, cependant.

5
ChssPly76

Il semble qu'il y en ait un après tout (développé probablement un certain temps après que cette question a été posée)

https://github.com/Jasig/sass-maven-plugin

4
Eran Medan

Étant donné que SASS doit être converti en CSS pour être utilisable, quel est le problème avec l'utilisation de sass2css qui distribue avec Ruby SASS?

3
aussiegeek

Vous pouvez essayer ce filtre que je viens de mettre en place - https://github.com/darrinholst/sass-Java

3
Darrin Holst

J'utilise Compass & Sass dans mon projet Eclipse avec Ant.

J'ai suivi ce tutoriel ici:

http://caueguerra.com/tutorial-using-sass-in-a-Java-project

Compass étend Sass et permet mes autres extras.

http://compass-style.org/

1
Eric H

Je sais que je suis en retard à la fête, mais c'est l'approche que j'ai adoptée pour utiliser SASS dans un projet Java avec une génération Ant: http: //workingonthecoolstuff.blogspot). com/2011/02/using-sass-in-ant-build.html Pour résumer, je fais la construction sur une machine avec Ruby et Sass installé de sorte qu'il était aussi aussi simple que d'appeler la commande/application sass en utilisant la tâche Ant "appliquer" avec un ensemble de fichiers qui inclut tous les fichiers SCSS/SASS.

1
spaaarky21

Sassc est une implémentation de ligne de commande en C, qui devrait être facile à ajouter au processus de construction. D'après les auteurs, je dirais qu'il devrait rester à jour avec sass:

Sass a été initialement créé par le co-créateur de cette bibliothèque, Hampton Catlin (@hcatlin). L'extension et l'évolution continue de la langue sont toutes le résultat d'années de travail de Nathan Weizenbaum (@ nex3) et Chris Eppstein (@chriseppstein).

0
Sam Hasler