问题标签 [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.

0 投票
1 回答
1304 浏览

playframework-2.3 - 无法让 sbt-web 与 npm 一起工作以获取前端依赖项

我正在尝试特别使用 sbt-web 和sbt-js-engine来解决我与 npm 而不是 webjars 的依赖关系。

我的问题是在任务target/web/public/main/lib期间没有将依赖项复制到文件夹中,web-stage因为使用 webjar 就是这种情况。

我使用来自 sbt-js-engine 的示例项目进行测试。有了这个项目,我希望从文件夹中console-browserify的文件中找到依赖关系,但事实并非如此。package.jsontarget/web/public/main/lib

在此处输入图像描述

也许我完全误解了一些东西?

0 投票
1 回答
1971 浏览

playframework - 在 Play 2.3.x 应用程序中使用 sbt-rjs 从 WebJars 优化 JS

是否可以通过 WebJars 将 Play 2.3 应用程序 concat/optimize JS(使用 sbt-rjs)包含在我的应用程序中?
举一个具体的例子:我正在尝试创建一个core.js模块,其中包含我所有的 3rd 方库,这些库在单个文件中连接和缩小,然后可以将其指定为其他 AMD 模块的依赖项。
通过 WebJars 包含这些库而不是“手动”下载源代码会很棒。

这是我的build.sbt文件中的一个片段,我在其中指定了我的 webjar 依赖项:

这是我的 requireJS 构建配置

最后,这是我的core.js模块:

activator clean stage从命令行运行后,我希望构建的core.js文件将包含我指定的所有依赖项连接并缩小到一个文件中,但它不包含其中任何一个。如果我指定一个非 WebJar 文件作为 core.js 的依赖,它确实会正确优化。

我正在尝试做的事情可能吗?我一直在谷歌搜索,但无论哪种方式都无法找到明确的答案。

谢谢!

0 投票
1 回答
544 浏览

scala - 无法让 sbt-concat 从 sbt-sass 或 sbt-less 捆绑样式

(提供的示例项目)我无法让sbt-concat按设计工作以查找和连接由预处理器任务产生的样式产生的样式表。在我的生产应用程序中,我正在尝试使用它来捆绑从sbt-sass选择缩小的输出文件。它在该项目的复杂设置中不起作用,因此我创建了一个示例项目,看看我是否可以让它工作。它在示例项目中也不起作用。这是一个测试项目build.sbt,它尝试创建几个捆绑包,几乎有我能想到的所有可能性,只是为了看看它们中的任何一个是否有效(公共 Github 存储库,您应该能够克隆并立即复制问题):

我跑来测试; clean; reload; stageactivator我看到资产源文件已复制到target文件夹中,声明的捆绑包具有以下结果:

  • style-group1.css不存在
  • style-group2.css包含button.csscore.css
  • style-group3.css包含core.cssbutton.css
  • style-group4.css不存在
  • style-group5.css仅包含以下内容core.css
  • style-group6.css只包含编译后的内容lessStyle.scss
  • style-group7.css只包含编译后的内容sassStyle.scss
  • style-group8.css不存在

我不明白为什么第 2 和第 3 案例不提取预处理器生成的css文件,而定制的第 6 和第 7 案例却可以。或许值得注意的是,所有源文件的myPipelineTask显示结果PathMapping,以及css来自 Sass 和 Less 任务的派生和源映射。

0 投票
0 回答
343 浏览

playframework - sbt-web - 一次执行 2 次源文件任务

我正在开发一个用作源文件任务的 sbt-web 插件。它似乎在一个巨大的警告下工作得很好,每次通过它运行两次。我不知道为什么,甚至不知道如何调试正在发生的事情,所以在这两个方面的任何帮助都将不胜感激。我所知道的是,如果我调用“激活器运行”,然后加载一个页面,我的插件会被调用 2 次,而所有其他插件,例如 JSHint 和 Stylus,只会被调用一次。

我的插件实际上比其他插件少得多,所以我怀疑我缺少一些小的配置。有谁知道什么可能导致插件被调用两次,或者有人需要做什么来防止这种情况发生?这是代码片段:

提前致谢!

0 投票
3 回答
808 浏览

sbt - 如何通过 SBT 项目依赖项将 sbt-web 输出与 xsbt-web-plugin 一起使用?

我正在尝试使用没有播放框架的 sbt-web 插件,而是使用 xsbt-web-plugin 构建一个 webapp。

我已经让 sbt-web 插件在处理资产管道时正常工作,并让它创建一个有效的 webjar 输出(通过 packageBin)以及标准的“web/public/main”输出(通过资产)。

另外,我一直在使用 xsbt-web-plugin 开发一个 webapp 并从 SBT 中提供该 webapp(通过 container:start)。webapp 项目可以使用来自 mavenCentral 的 webjar 依赖项,并毫无问题地引用这些资源。

我无法弄清楚的是如何让 xsbt-web-plugin 将来自 sbt-web 管道的资产包含在 Web 应用程序中。看来我能做的最好的就是让它们进入 CLASSPATH。(据我了解,这就是游戏所需要的全部,因为他们有一个“资产控制器”,可以从 CLASSPATH 中为这些资产提供服务,因此不需要将它们作为静态资产提供给 Web 应用程序)。

我已经创建了一个公共 GitHub 存储库(https://github.com/MartinSnyder/serving-sbt-web-output)来演示我正在尝试做的事情。

我的 plugins.sbt 是:

我的 build.sbt 是:

webapp中的HTML文件是:

按照目前的情况,requirejs 已成功提供服务,因为它来自预构建的 webjar。这三个标签都是不同的,并且尝试引用来自 sbt-web 的资产输出的尝试失败。

我试图实现的最佳情况是让 sbt-web 插件输出(target/web/public/main/ )包含在 xsbt-web-plugin webapp 输出(target/webapp/)中。我会满足于 xsbt-web-plugin 能够以 webjar 的形式访问项目依赖项。

0 投票
0 回答
307 浏览

playframework - sbt-concat 不会为子文件夹中的文件创建组

我正在尝试在播放框架项目(v2.3.8)中使用sbt-concat创建一个 concat 组。但它不起作用。/app/assets/文件夹中的文件已成功连接,但任何将文件合并到子文件夹中的组都不起作用。在下面的示例中,创建了group_1.js ,但未创建group_2.js,尽管在执行命令activator web-stage后,我看到消息Building 2 concat group(s)显示。我做错了什么?非常感谢您提前提供的任何提示。

PS:我想在开发和生产模式下使用连接文件。我将如何在我的模板中包含这些文件?我可以只使用<script src="@routes.Assets.at("group_1.js")">吗?

目录布局:

构建.sbt:

插件.sbt:

0 投票
1 回答
217 浏览

playframework-2.3 - 在供应商 js 上播放 2.3 jshint 禁用

我在 app/assets 下有几个供应商缩小的 js。如何禁用 jshint 来处理这些文件?

应用程序/资产/js/vendor/angular-moment.min.js

0 投票
0 回答
231 浏览

playframework-2.3 - 播放 2.3 RjsKeys.mainModule 导致错误:优化器不支持路径回退

在 build.sbt 上,如果我将这些配置用于 rjs,

它给了我这个错误:[信息]错误:错误:优化器不支持路径回退。请为 Angular 提供构建配置路径覆盖

我必须将'build'作为 mainModule 来解决上述警告。这是正确的解决方法吗?

0 投票
0 回答
63 浏览

playframework-2.0 - CSS 更改未显示

根据“打包和发布”下的说明,我有一个使用 sbt-web 1.1.0 插件配置的 Play 2.3.7 应用程序:

这在打包和部署时工作正常(使用 sbt-native-packager)。但是,当在开发模式下从 SBT 运行时,对任何 CSS 所做的更改都不会显示,直到我完全退出并重新启动 SBT(甚至重新加载都不起作用)。我猜测正在创建的资产 jar 中的 CSS 优先。如果我删除(managedClasspath in Runtime) += (packageBin in Assets).value资产更改再次开始工作,但现在没有任何资产得到部署。

是否有解决此问题的标准/惯用方法,或者我在构建中卡住评论和取消评论行?

0 投票
1 回答
395 浏览

playframework - 开发与生产中不同的 sbt-web 管道任务设置?

我希望 sbt 设置在开发(sbt run)中运行时具有与生产(sbt dist/ sbt start)不同的值。

具体来说,我正在使用sbt-uglify。我在开发中使用它来将 javascript 资产连接到一个文件中。我在开发中禁用了压缩和修改,因为它使代码更难调试。

在生产中,我想使用压缩来删除调试代码块(if (DEBUG) { ... }),这可以使用 uglifyjs 的死代码删除功能。

我希望这会起作用: