作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一堆 Scala 项目。他们应该共享一个共同的代码风格。我正在使用 scalafmt 来强制执行某些规则,但我必须创建一个
.scalafmt.conf
scalafmt.conf
作为我自己的其他项目可以导入的依赖项?这样,一个项目仍然可以依赖于他们自己版本的代码风格——但是升级路径更直接,应该只包含升级依赖项。
style = default
style = defaultWithAlign
style = MyCompanyDefault
最佳答案
考虑定义一个自定义任务到 download .scalafmt.conf
从远程存储库
lazy val remoteScalafmtConfig = taskKey[Unit]("Fetch .scalafmt from external repository")
remoteScalafmtConfig := {
import scala.sys.process._
streams.value.log.info("Downloading .scalafmt.conf config from remote repository")
val remoteScalafmtFile = "https://some/external/repo/.scalafmt.conf"
val baseDir = (Compile / baseDirectory).value
url(s"$remoteScalafmtFile") #> (baseDir / ".scalafmt.conf") !
}
compile
任务
depend on
remoteProtoFiles
像这样的任务
compile in Compile := (compile in Compile).dependsOn(remoteScalafmtConfig).value
sbt compile
应该下载
.scalafmt.conf
在编译执行之前进入项目的基本目录。
package example
import sbt._
import Keys._
object ScalafmtRemoteConfigPlugin extends AutoPlugin {
object autoImport {
lazy val remoteScalafmtConfig = taskKey[Unit]("Fetch .scalafmt from external repository")
}
import autoImport._
override lazy val projectSettings = Seq(
remoteScalafmtConfig := remoteScalafmtConfigImpl.value,
compile in Compile := (compile in Compile).dependsOn(remoteScalafmtConfig).value
)
lazy val remoteScalafmtConfigImpl = Def.task {
import scala.sys.process._
streams.value.log.info("Downloading .scalafmt config from remote repository...")
val remoteScalafmtFile = "https://github.com/guardian/tip/blob/master/.scalafmt.conf"
val baseDir = (Compile / baseDirectory).value
url(s"$remoteScalafmtFile") #> (baseDir / ".scalafmt.conf") !
}
}
project/plugins.sbt
中导入插件并通过
enablePlugins(ScalafmtRemoteConfigPlugin)
启用会自动下载
.scalafmt
执行后
sbt compile
.
关于scala - 如何创建我的项目可以依赖的自定义 scalafmt 样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56627980/
我使用 scalafmt我项目中的插件,我也使用 scalafmt plugin for Intellj为了格式化我的 Scala 代码。通常我使用热键或运行 sbt scalafmt 来格式化。 s
我有一堆 Scala 项目。他们应该共享一个共同的代码风格。我正在使用 scalafmt 来强制执行某些规则,但我必须创建一个 .scalafmt.conf 对于每个项目。如果团队更改了 scala
我正在尝试将 scalafmt 温和地引入到现有的大型代码库中,我希望它几乎不做任何更改,除了一些整个团队可以达成一致的无争议设置。 通过像 maxColumn 这样的设置,我可以将 80 的默认值覆
我是一名优秀的程序员,十分优秀!