如何集成Sass和Play 2.3?

9

有没有可能集成SassPlay Framework 2.3,以便将Sass编译为CSS?如果可以,我该怎么做?我尝试过play-sass插件,但它不支持Play 2.3,只支持2.2及以下版本。


为什么要关闭投票? - aknuds1
不确定...现在正在给您写答案。 - acjay
3个回答

5
你可以尝试使用我的sbt-sass插件,适用于play框架2.3。
未来,我将尝试将插件与js编译器集成。现在它只能与ruby版本的sass一起使用。
链接:https://github.com/ShaggyYeti/sbt-sass

5

你可能已经知道,Play已经迁移到使用sbt-web作为其资产管道的模型,而不是旧系统。它比旧系统更灵活。不幸的是,由于它是如此新,它也缺少了很多现有的包。你要么自己编写sbt-sass,要么等待别人完成。我正在为将我的项目迁移到Play 2.3而感到困扰。

在周二的Play网络研讨会上,Typesafe的Christopher Hunt为stylus做了一个完整的sbt-web插件示例,并链接到源代码here。大部分逻辑都是以Node风格在JS脚本中编写的,模块是从WebJars而不是NPM中提取的。

需要修改的两个部分在JS文件中,一个是调用Sass而不是Stylus的部分,另一个是解析错误并将其传回Play的部分。后者只需编辑parseError函数即可。前者可以直接插入调用Sass的代码,也可以像他们对Stylus做的那样,将现有的Sass包装器适应为WebJar形式,并以相同的方式使用它。在npm上有几个可能会起到作用。 编辑 我已经使用ShaggyYeti的sbt-sass包很长时间了,效果非常好。请参见其他答案。

您能否评论使用WebJars与NPM之间的区别?我的意思是,为什么我要从那里拉取依赖项,而不是从NPM中获取呢? - aknuds1
2
@aknuds1 我认为WebJars的主要优势在于它将整个端到端过程带入了SBT,而不必安装node、npm、bower等。 - acjay
为什么不使用Grunt/Gulp将Sass编译为CSS,然后将其放在play的构建脚本所在的同一文件夹中。我计划在我的新设置中这样做... - automaticAllDramatic
@rizwaniqbal 很多人都这样做。我会认为在前端构建工作流程中依赖SBT有一些好的方面。实际使用SBT的直观性不是其中之一,但只需要一个栈且没有外部依赖项很方便。尽管需要安装Ruby来运行Sass,这一点有些削弱了。 - acjay
1
@acjay,我在安装Ruby时遇到了同样的问题。因此,我重写了sbt-sass插件,使用libsass而不是Ruby版本。因此,它不应该需要除SBT之外的任何外部应用程序。可以通过addSbtPlugin("org.irundaia.sbt" % "sbt-sassify" % "1.4.0")将其包含在SBT中。 - irundaia
@irundaia 太棒了!尽管我认为如果我再写一个Play框架应用程序,我可能会使用Scalatags + ScalaCSS。 - acjay

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接