gpt4 book ai didi

scala - 如何将 npm/gulp/bower 构建过程集成到 sbt 中?

转载 作者:行者123 更新时间:2023-12-04 12:40:50 25 4
gpt4 key购买 nike

我有两个独立的 git 存储库,一个是用 sbt 构建的 Scala 服务器,另一个是用 npm/bower/gulp 构建的 webapp 前端。

在服务器 repo 中,我已经有一个任务来构建一个独立的 jar(不是标准包任务);在前端仓库中,我可以使用 npm install && npm run build 构建这将导致一个独立的目录 _public .

现在我想包含 UI 目录 _public在 sbt 构建 jar 任务期间,我想知道除了在 sbt 中手动生成外部进程来调用 npm 之外,是否还有更好的方法呢?

最佳答案

sbt-web 和依赖它的 webjars 目前的状态是它们几乎跟不上 Node.js 和 npm 的增长。例如,sbt-hbs插件不再维护,我的经验表明它不适用于任何 Node.js 版本 8 或更高版本。在这些基于 webjar 的前端工具中,对 sbt 1.0 的支持也不完整。
因此,与问题所暗示的不同,通过 sbt 直接生成 npm 进程来构建前端是比许多更好的解决方案。

This answer from a different question提供了一种从 sbt 调用 npm 的足够可靠的方法,为了完整起见,我将在此处进行复制。

buildFrontend := {
val s: TaskStreams = streams.value
val shell: Seq[String] = if (sys.props("os.name").contains("Windows")) Seq("cmd", "/c") else Seq("bash", "-c")
val npmInstall: Seq[String] = shell :+ "npm install"
val npmTest: Seq[String] = shell :+ "npm run test"
val npmLint: Seq[String] = shell :+ "npm run lint"
val npmBuild: Seq[String] = shell :+ "npm run build"
s.log.info("building frontend...")
if((npmInstall #&& npmTest #&& npmLint #&& npmBuild !) == 0) {
s.log.success("frontend build successful!")
} else {
throw new IllegalStateException("frontend build failed!")
}
}

关于scala - 如何将 npm/gulp/bower 构建过程集成到 sbt 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27185868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com