私は sbt/play の設定にあまり詳しくありません。Play 2.3.8 を使用して JavaScript アプリケーションを提供しています。プロジェクトには次のものがあります。
.enablePlugins(SbtWeb)
.enablePlugins(play.PlayScala)
.settings(
...
libraryDependencies ++= WebDependancies :+ evobufAkka,
pipelineStages in Assets := Seq(closure, digest),
...
// Some closure compiler settings
)
プロジェクトはクロージャコンパイラを使用してコードなどを縮小していますが、変更したいと思います。クロージャ コンパイラの使用をやめ、代わりに単純な npm パッケージを使用したいと考えています。sbt がいくつかのシェル タスクを実行できることは承知しています。すべての理由は、サーバーをフロントエンドから分離するためです。したがって、フロントエンドに関連するすべてのタスク (less、uglify、フィンガープリンティングなど) は、実際にはノードのような JavaScript ツールによって実行されます。sbt-web について読んでいましたが、できれば避けたいと思います。1. sbt を起動し、プロジェクトを開きます 2. コンパイルを実行します: - sbt は npm タスクを実行し、build.js ファイルを作成します。このファイルは、/public ディレクトリなどから play フレームワークを介して提供できます。3. 可能であれば、単体テスト用に別のプロセスを用意する可能性が欲しいです。
npm のセットアップに関しては、package.json を自分のproject/public
フォルダーに入れることを考えていましたproject/app/assets
。
それはすべて可能ですか?
2015 年 8 月 8 日更新
私はいくつかの調査を行い、外部プロセスについて知りました。私が作成したいくつかの例に基づいて:
lazy val npmBuildTask = taskKey[Unit]("Execute the npm build command to build the ui")
npmBuildTask := {
"cd public/ && npm install" !
}
しかし、このタスクをコンパイル プロセスに追加する方法がわかりません。