Я ищу реализацию SASS на Java (можно использовать с JSP / JSF). Для Python я нашел CleverCSS, но для Java нет ничего. Кто-нибудь слышал что-нибудь об этом инструменте для создания CSS?
Реализация SASS для Java?
Ответы (12)
С ANT:
- Загрузите полный файл jar JRuby (страница загрузки JRuby Complete jar)
- Загрузите последний код HAML / SASS (tarball HAML / SASS) и распакуйте его. Поместите его в "/ libs / sass- [ВЕРСИЯ]"
- Добавьте следующее в файл сборки муравья.
- Заменить [VERSION] в скрипте на соответствующие версии JRuby и SASS
- Запустите сценарий ant, и файлы sass или scss будут скомпилированы!
<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>
С MAVEN:
Maven также может сделать это: Используя плагин 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>
require 'libs/sass-[VERSION]/lib/sass'
не работал для меня как относительный, мне пришлось взять абсолют из свойства, которое у меня было в руке. Так это сработало с require $project.getProperty('project.root') + '/sass/sass-3.2.9/lib/sass'
- person L. Holanda; 07.06.2013
build.xml:171: org.jruby.exceptions.RaiseException: odd number of args for Hash
(Строка 171 в моем build.xml - это начало тега <script>
)
- person L. Holanda; 12.09.2013
<configuration>
и <execution>
отсутствует символ /
. Я попытался отредактировать ответ, но изменения должны содержать не менее 6 символов, так что это лучшее, что я могу сделать.
- person Mike; 29.06.2014
ZUSS - хорошая альтернатива LESS и SASS. Это похоже на МЕНЬШЕ. В отличие от LESS и SASS, обработка файлов ZUSS не требует интерпретатора JavaScript.
Отказ от ответственности: я разработчик ZUSS. Я разработал его просто потому, что не могу найти подходящего решения для Java.
Есть один проект: http://code.google.com/p/jsass/ ( но это на очень ранней стадии).
Если вас интересует Less, для него есть готовая версия Java: http://www.asual.com/lesscss/
Вы также можете взглянуть на Оптимизатор веб-ресурсов 4 J (WRO4J), который позволяет многое ( минимизация, объединение ресурсов) и поддерживает Less CSS (насколько мне известно во время выполнения).
Это означает: вы добавляете фильтр wro4j в свой web.xml, и когда вы запрашиваете CSS, ваши файлы .scss (или .saas) компилируются в стандартный CSS.
Я еще не использовал его, но он кажется более продвинутым, чем другие продукты, перечисленные здесь.
Фактически, я читал комментарии на веб-сайте Less for Java (http://www.asual.com/lesscss/), а WRO4J использует эту библиотеку, чтобы обеспечить ее «на лету Меньшая компиляция». Так что я думаю, что Less for Java - лучший вариант.
Знаете ли вы, что веб-фреймворк Vaadin имеет собственный встроенный компилятор Sass? См. https://vaadin.com/blog/-/blogs/state-of-sass-support-in-vaadin-7-today ...
Я лично нахожу синтаксис SASS ужасно раздражающим. Для поклонников Ruby / Python это может стать второй натурой; для меня как Java-парня - не так уж и много. Я настоятельно предпочитаю LESS, который основан на синтаксисе CSS, а не придумывать новый. У этого есть приятное дополнительное преимущество, заключающееся в возможности использовать существующие файлы CSS «как есть» и включать МЕНЬШЕ функций по мере необходимости.
Тем не менее, насколько мне известно, ни у SASS, ни у LESS нет портов Java. Однако оба основаны на Ruby, поэтому вы можете установить их в JRuby. Единственная проблема с этим подходом заключается в том, что JRuby невероятно медленно запускается. Однако это не имеет большого значения, потому что вы, вероятно, собираетесь использовать мониторинг файлов при разработке (и после запуска он работает очень гладко), и вы не будете так сильно заботиться о том, что ваша сборка во время развертывания займет на несколько секунд больше. .
Существуют также некоторые реализации на основе PHP, такие как LessPhp, xCSS и другие. Хотя лично их не пробовал.
Кажется, все-таки есть один (разработанный, вероятно, через некоторое время после того, как этот вопрос был задан)
https://github.com/Jasig/sass-maven-plugin
<dependency><groupId>org.jruby</groupId><artifactId>jruby-complete</artifactId><version>1.6.7.1</version></dependency>
Я бы предпочел то, что не имеет никаких зависимостей.
- person Sam Hasler; 09.08.2012
Учитывая, что SASS должен быть преобразован в CSS, чтобы его можно было использовать, что плохого в использовании sass2css, который распространяется с Ruby SASS?
Вы можете попробовать этот фильтр, который я только что собрал - https://github.com/darrinholst/sass-java а>
Я использую Compass и Sass в своем проекте eclipse с помощью Ant.
Я следил за этим руководством здесь:
http://caueguerra.com/tutorial-using-sass-in-a-java-project
Compass расширяет Sass и позволяет использовать другие мои дополнения.
Я знаю, что опаздываю на вечеринку, но я использовал такой подход к использованию SASS в проекте Java со сборкой Ant: http://workingonthecoolstuff.blogspot.com/2011/02/using-sass-in-ant-build.html Подводя итог, я m выполнял сборку на машине с установленными Ruby и Sass, поэтому было так же просто, как вызвать команду / приложение sass с помощью задачи Ant «применить» с набором файлов, который включает все файлы SCSS / SASS.
Sassc - это реализация командной строки на языке C, которую легко добавить в процесс сборки. Основываясь на словах авторов, я бы сказал, что он должен быть в курсе sass:
Первоначально Sass был создан одним из создателей этой библиотеки Хэмптоном Кэтлином (@hcatlin). Расширение и продолжающаяся эволюция языка - все это результат многолетней работы Натана Вейценбаума (@ nex3) и Криса Эппштейна (@chriseppstein).