如何在Play应用程序中为require.js设置requireNativePath

时间:2013-05-28 19:42:05

标签: playframework playframework-2.0 requirejs

Play Framework 2.1.0版文档声明:

  

默认使用基于rhino的优化器,可以通过requireNativePath设置配置本机节点版本的性能

但是没有关于如何/在何处实际执行此操作的示例。当我将我的应用程序部署到Heroku时,优化步骤耗时超过10分钟,导致构建失败。任何人都可以指出我应该如何设置这个requireNativePath标志?

2 个答案:

答案 0 :(得分:4)

没有简单的方法可以让requireNativePath在Heroku上工作,因为您必须分叉并修改scala buildpack以获得改进。但是,通过以下步骤,您将优化速度提高10倍以上(部署时间约为700 +秒,现在只需约65秒)

继续并分叉scala buildpack并应用modifications from here。这些修改主要是安装node和npm,然后安装requireJS node_module。

将修改添加到buildpack之后,您必须告诉heroku通过CLI使用您的自定义buildpack

$ heroku config:set BUILDPACK_URL=https://github.com/<your user>/heroku-buildpack-scala

接下来,通过添加此行修改您的Build.scala项目设置

requireNativePath := scala.util.Properties.envOrNone("REQUIREJS_PATH")

接下来通过CLI在heroku上为REQUIREJS_PATH设置一个配置变量。这是buildpack修改将安装r.js文件的路径:

$ heroku config:set REQUIREJS_PATH=/tmp/scala_buildpack_build_dir/vendor/node/bin/r.js    

接下来,您必须从heroku启用user-env-compile实验室。这将允许您从编译过程中访问任何环境变量。

$ heroku labs:enable user-env-compile

完成上述步骤后,您现在可以将最新更改推送到heroku,您会发现优化步骤的时间减少了10倍

答案 1 :(得分:2)

将其添加到项目设置中:

requireNativePath := Some("/usr/local/lib/node_modules/requirejs/bin/r.js")

您还可以查看此示例应用:https://github.com/magro/play2-java-computer-database/tree/master/play-coda