Впровадження SASS для Java? [зачинено]


76

Я шукаю реалізацію SASS в Java (може використовуватися з JSP / JSF). Для Python я знайшов CleverCSS, але для Java немає нічого. Хтось чув щось про такий інструмент для створення CSS?


3
SASS / SCSS розроблено в Ruby. Щоб отримати найкращі та найновіші функції, краще використовувати Ruby, а потім власну реалізацію в Java. Власна реалізація також буде позаду останньої та найбільшої.
Джоеп

5
@Joepie, менша залежність для мене важливіша, ніж наявність останньої версії. SASS / SCSS в даний момент є достатнім для моїх потреб. Я просто хочу полегшений спосіб його використання.
Sam Hasler

2
Крім того, те, що щось не є "рідною" реалізацією, не означає автоматично, що воно стане застарілим. Може бути використаний машинний переклад, або один захоплений розробник міг би тримати його в курсі.
Sam Hasler

Відповіді:


48

З АНТ:

  1. Завантажте файл JRuby Complete Jar (сторінка завантаження JRuby Complete jar )
  2. Завантажте найновіший код HAML / SASS ( табло HAML / SASS ) і витягніть його. Помістіть його в "/ libs / sass- [ВЕРСІЯ]"
  3. Додайте наступне у файл збірки мурашок.
  4. Замініть [ВЕРСІЯ] у сценарії на відповідні версії JRuby та SASS
  5. Запустіть мурашиний сценарій, і файли 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>  

Це також можливо через Maven?
Джеремі С.

Де ви отримуєте архів haml / sass? Чи потрібно мені поміщати це в gemfiles для JRuby, чи я можу якось посилатися на них? Тобто, без використання інсталятора JRuby, просто jar. Дякую!
Алекс Кімініян

Перше вимагає "require 'libs / sass / lib / haml'" - шлях відносно папки вашого проекту.
Джоеп

1
З якоїсь причини require 'libs/sass-[VERSION]/lib/sass'це не спрацювало як відносне для мене, мені довелося покласти абсолютне з майна, яке було в мене в руках. Тож це працювало зrequire $project.getProperty('project.root') + '/sass/sass-3.2.9/lib/sass'
Л. Холандою

1
Привіт Джопі, посилання на HAML / SASS здається мертвим, ти міг би оновити посилання, якщо це можливо?
bummi

19

ZUSS - хороша альтернатива LESS і SASS. Це схоже на LESS. На відміну від LESS та SASS, для обробки файлів ZUSS не потрібен інтерпретатор JavaScript.

Застереження: Я розробник ZUSS. Я розробив його просто тому, що не можу знайти чіткого рішення для Java.


IMO, Zuss найкраще підходить для середовища Java, такого як виклик методу Java, вирішувач змінних та локатор ресурсів.
Пн,

Ого, приємне рішення. Я розгляну це для майбутніх java-проектів! Дійсно приємно. Чи є у вас додаткова інформація про кешування під час використання сервлету? Документація про це не зрозуміла ... Наскільки швидким є крок компіляції при використанні сервлету?
Джоеп

1
Сервлет за замовчуванням не надає кеш-пам’яті. Якщо хочете, будь ласка, продовжте його.
Том Є

Місцезнаходження GitHub: github.com/tomyeh/ZUSS ; Репо Maven: mvnrepository.com/artifact/com.github.tomyeh/zuss/…
skia.heliou

14

Існує один проект: http://code.google.com/p/jsass/ (але це на дуже ранній стадії).

Якщо вас цікавить Less, для нього існує готова до використання версія Java: http://www.asual.com/lesscss/


Я лише кажу, що це в інтересах отримання додаткової інформації добре, у наведеному вище проекті використовується rhino для запуску файлу JavaScript.
mP.

3
jsass виглядає як abandonware. Проголосував за менше css-сервлет asual
Сем Гаслер

10

Ви також можете заглянути в Оптимізатор веб-ресурсів 4 J (WRO4J) який дозволяє багато чого (мініфікація, злиття ресурсів) і підтримує менше CSS (на час, наскільки я знаю).

Це означає: ви додаєте фільтр wro4j до свого web.xml, і коли ви просите CSS, ваші файли .scss (або .saas) компілюються до стандартного CSS.

Я ще не використовував його, але він здається більш досконалим, ніж інші продукти, перелічені тут.


Насправді я читав коментарі на веб-сайті Less for Java ( http://www.asual.com/lesscss/ ), і WRO4J використовує цю бібліотеку, щоб забезпечити компіляцію "на льоту". Тому я думаю, що Менше для Java - це шлях.



5

Мені особисто синтаксис SASS здається глибоко, жахливо дратує. Для натовпу Ruby / Python це може стати другою натурою; для мене, як для хлопця з Java, - не так вже й багато. Я настійно вважаю за краще МЕНШЕ яке базується на синтаксисі CSS, замість того, щоб придумувати новий. Це має приємну додаткову перевагу у тому, що ви можете використовувати наявні файли CSS «як є» та включати БЕЗ функцій за потреби.

Тим не менш, ні SASS, ні LESS не мають портів Java, наскільки мені відомо. Проте обидва базуються на рубіні, тому ви можете встановити їх під JRuby . Єдиною проблемою такого підходу є JRuby, що розумно-повільно запускається. Однак це не велика справа, тому що ви, швидше за все, будете використовувати моніторинг файлів у розробці (і після запуску він працює дуже гладко), і ви не будете так піклуватися про те, що ваша збірка займає кілька секунд довше під час розгортання .

Є також деякі реалізації на основі PHP, такі як LessPhp , xCSS та інші. Однак я не пробував їх особисто.


3
Синтаксис Sass пом'якшено: зараз це схоже на CSS без дужок. У майбутній версії Sass будуть доступні додаткові дужки. Однією з переваг Sass є те, що компілятор та інструменти набагато зріліші, ніж аналоги Less. IntelliJ 9 підтримує Sass (встановіть плагін Ruby, щоб отримати його). Ми перейшли з Less на Sass насамперед для підтримки редактора. Зараз мені це подобається більше, ніж Менше (батьківське посилання '&' є безцінним) Інструмент css2sass дозволяє дуже легко конвертувати файли css - він також вкладе селектори там, де це можливо. Ми перетворили великий проект і не мали жодних проблем.
jomohke

Я теж ненавиджу синтаксис sass. Це нібито легше переглядати, але брекети полегшують мені це.
Хуан Мендес,

10
До речі, зараз існує синтаксис SCSS, який використовує фігурні дужки.
Debilski

4

Здається, все-таки є одна (розроблена, мабуть, через деякий час після того, як було задано це питання)

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


Шкода, що це втягує jRuby: <dependency><groupId>org.jruby</groupId><artifactId>jruby-complete</artifactId><version>1.6.7.1</version></dependency>Я віддав би перевагу тому, що не мало ніяких залежностей.
Sam Hasler

1
@SamHasler зрозумів, чому ви, до речі, віддаєте перевагу ніяким залежностям? крім шансу, що це змінить ліцензію / зламає / роздує вашу базу коду, навіть у самого Maven є маса залежностей ... що-небудь хороше там насправді має багато залежностей, це частина приємного у відкритому коді, чи не так?
Еран Медан,

Якщо щось в одній із моїх залежностей зламається, я хотів би мати можливість зайнятися цим і виправити це самостійно. Я не знаю рубіну, тому я віддав би перевагу чомусь, що не будувалося на ньому.
Sam Hasler

Рубі чудова :) Я людина Java, і вивчення Рубі було одним із найцікавіших речей, які я робив нещодавно ...
Еран Медан,

1
Автор тут плагіна sass-maven. Якщо хтось не зробив повного перепису SASS на Java, jRuby завжди знадобиться. Це значно стабільніше, оскільки той самий код SASS, що використовується в наданих інструментах, використовується плагіном maven.
Ерік

3

Враховуючи те, що SASS потрібно перетворити на CSS, щоб бути придатним для використання, що поганого у використанні sass2css, який розповсюджується за допомогою Ruby SASS?



1

Я використовую Compass & Sass у своєму проекті затемнення за допомогою Ant.

Я дотримувався цього підручника тут:

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

Компас розширює Сасс і дозволяє використовувати інші мої додаткові послуги.

http://compass-style.org/


Посилання не працює.
Rootical V.

1

Я знаю, що запізнився на вечірку, але саме такий підхід я застосував до використання SASS у проекті Java зі збіркою Ant: http://workingonthecoolstuff.blogspot.com/2011/02/using-sass-in-ant -build.html Підсумовуючи, я роблю збірку на машині з встановленими Ruby і Sass, так що це було так само просто, як виклик команди / програми sass за допомогою завдання Ant "застосувати" з набором файлів, що включає всі SCSS / SASS файлів.


0

Sassc - це реалізація командного рядка на C, яку слід легко додати до процесу збірки. Виходячи з авторів, я б сказав, що він повинен бути в курсі sass:

Спочатку Sass був створений співавтором цієї бібліотеки Хемптоном Кетліном (@hcatlin). Розширення та подальша еволюція мови було результатом багаторічної роботи Натана Вайценбаума (@ nex3) та Кріса Еппштейна (@chriseppstein).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.