问题标签 [sbt-web]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sbt - 如何让 SBT 识别自定义配置范围的设置
我正在使用 sbt-web,我只想将 js 文件 uglify 用于生产(在开发时节省编译时间)。但是,当我运行时:
我得到相同的结果
也就是说,prod:run
似乎没有拾取pipelineStages in prod
下面的范围设置。
我确定我误解了这一切是如何运作的,并希望有一些清晰和正确的用法。我已经阅读了http://www.scala-sbt.org/0.13/tutorial/Scopes.html以及关于 SO 的所有类似帖子,但灯泡还没有打开。如果有更好的方法,我很好,但是因为我处于学习模式,我仍然想知道为什么这不起作用的原因。
这是完整的 ./build.sbt 文件:
scala - 在运行测试之前,如何执行 sbt-web 资产管道,特别是 sbt-concat?
在运行测试之前,我需要一个 JavaScript 文件。它是使用 sbt-concat 创建的。如何添加 sbt-web 资产管道作为运行规范测试的依赖项?
uglifyjs - SbtWeb:丑化 traceur 的输出
我正在使用 SbtWeb traceur 插件在 Play Framework (sbt/scala) 项目中转换我的代码。这给了我一个 ES5 资源/main.js
。然后我想将结果丑化为/main.min.js
. 我也添加了 uglify 插件,然后尝试执行以下操作:
pipelineStages := Seq(traceur, uglify)
不幸的是,这不能编译,就像traceur
TaskKey 一样,但不是正确的类型。我怎样才能做到这一点?
编辑:看起来更接近正确的方法是这样的:
但是,我现在收到 Javascript 中存在语法错误的 uglify 错误。这必须是因为 uglify 正在尝试处理原始 ES6 源,而不是 traceur 的 ES5 输出。还不知道如何让它工作。
scala - 如何在单个项目中将 scala-js 工件与 sbt-web 一起使用?
我想使用 sbt-web 和 scala-js 创建一个 webjar。到目前为止,我已将artifactPath
scala-js 工件的 s 添加到mappings in Assets
. 如果我打电话fastOptJS
并且文件显示在正确的 webjar 位置,这确实有效。
但是,我希望在compile
. 问题是,每当我在此处添加任务依赖项时,我都会得到循环依赖项fastOptJS
。由于循环依赖关系,我无法添加fastOptJS
到resourceGenerators
or sourceGenerators
,也无法添加依赖项。compile
这不是fastOptJS
从另一个项目触发的选项。
有针对这个的解决方法吗?
playframework - 无需播放插件的 Play Framework sbt-web 集成
将 play 作为库嵌入,我在我的项目中启用了 sbt-web 插件,并运行web-stage
,使资产逐字复制到target/web/stage/
. 但是,使用 Play Framework 的字符串插值路由 DSL如下,当匹配请求进来时,它们不会被服务:
通过播放代码处理Assets.at
进行调试,看起来没有任何东西将资产变成资源target/scala-2.11/classes/
,大概是播放框架试图将它们作为资源加载。跑步sbt web-stage
并没有特别注意这一点。
那么 sbt-web 管理将资产放在那里时缺少什么?当手动放置在那里时,集成工作!因此,就 Play 而言,默认配置中的 sbt-web 似乎将资产放置在错误的目标子目录中......
请注意,plugins.sbt
我只包含来自 sbt-web 的以下内容,这是否足够?
node.js - In a ScalaJs sbt build, is there any advantage to use webjars instead of npm or bower with 'Provided'?
When I first discovered webJars a few months ago I was super-skeptical that it would be be a viable way means of handling client-side dependencies given the enormous complexity of some of these builds/buildsystems, and given the frequency that js
files are published. The second concern was of course not well-founded but I feel vindicated on the first after spending almost 36 hours now trying in vain to get about 10 scss/css/less
-type webJars and 8 JS webJars to live under one jsDependencies
roof.
What I found as that by the time you reach JS dependency 3, 4, or 5,you start getting into a ridiculous timekill loop:
1. "Oh nos! fastOptJS failed because there was some random file that was also named the same as a dependency in the webjar!"
2. I know what to do! I'll add a version to the defined js!
3. "Oh no! fastOptJS failed!"
gg boys.
This goes over and over and around and around, and then I have to start doing
and now I'm not really even using the webjar, but it has a jsdependency named X and I cannot change that...
Question
Hmmm? What if I just did what I used to do but build the dependencies without the app into some gigantic file, or set of files, and then feed that into the build? I have a proof of concept from online and I got it work (I think it was https://github.com/wav/material-ui-scalajs-react/blob/master/src/main/scala/wav/web/muiwrapper/package.scala ) which almost worked, and gave me the idea.
I know npm
works a lot better than sbt,
and I can still get it into my package... what's the downside, and am I missing something about sbt?
playframework - 如何让我的 Angular2 TestAssets 与我的 Assets with Play Framework 位于同一目录中?
Angular2 已经转向更模块化的方法来处理项目源。这意味着所有子模块源、html 模板和测试都在一个目录中。而不是分布在应用程序、公共和测试目录中。
这是一种很有意义的方法。
我正在尝试为此配置 Play/sbt-web。我的项目中有以下设置:
资产编译步骤正常工作。但之后我得到一个重复的映射错误(见下文)。似乎已编译的资产作为 webjar 依赖项添加到 TestAssets 编译中,而没有应用 excludefilter。这将解释重复映射。
有没有办法让它在我的项目中工作?或者这是 sbt-web 的一个缺点?(如有必要,我愿意处理 pullrequest 以进行修复)
你可以在这里找到我的 Activator 示例 play-angular2-typescript 项目。
这是重复的映射错误:
playframework - Play 2.4.x - 资产复制
在 Play 2.4.6 应用程序中,我正在处理的资产在 stage/dist 任务中被复制。
基本上它是一个包含 3 个子模块的应用程序,所有资产都存在于主public
文件夹中。我没有sbt-web
启用并且没有 webjars 依赖项(但从 jar 内容 Play 可能在某处使用它们)。
如果我使用PlayKeys.externalizeResources := false
我最终在lib
文件夹中有两个 jar 文件:
- myapp-server.myapp-server-0.9.6-assets.jar
- myapp-server.myapp-server-0.9.6.jar
第一个包含资产,因为它应该。第二个应该包含我的主要项目类文件,但它还有一个META-INF/resources/webjars/myapp-server/0.9.6
文件夹,其中包含公共文件夹中的所有资产!
如果我使用PlayKeys.externalizeResources := true
我会得到完全相同的行为,但会出现额外的META-INF/resources
文件夹myapp-server.myapp-server-0.9.6-externalized-resources.jar
。
那么我怎样才能摆脱那个额外的资产文件夹呢?我有很多资产,所以额外的文件夹增加了很多包大小......
scala - 无法在播放应用程序中导入 sbt-rjs 插件
我想在我的基于 play framework 2.5 的 java 应用程序中连接 JavaScript 文件。
在plugins.sbt
中,我添加了以下代码:
我还补充说:
在Build.scala
我添加了:
当我跑步时,>activator clean dist
我得到:
我尝试添加:
但是里面没有rjs
包com.typesafe.sbt
。
构建.scala
我所知道的是如何在应用程序中安装 sbt-rjs 插件。
playframework - 如何在 sbt-uglify 选项中指定目录
我有一个基于游戏框架的项目。我正在使用 sbt-uglify 插件来缩小和连接 js 文件
在我的 build.sbt 我已经定义
上面的代码包含了所有的js文件。但是我想做类似的事情
在不使用 sbt-concat 的情况下如何做到这一点?