数か月前に初めて webJars を発見したとき、これらのビルド/ビルドシステムの一部が非常に複雑であり、js
ファイルが公開される頻度を考えると、それがクライアント側の依存関係を処理する実行可能な方法であることに非常に懐疑的でした。2 番目の懸念はもちろん十分に根拠のあるものではありませんでしたが、約 10 個scss/css/less
の 型の webJars と 8 個の JS webJars を 1 つのjsDependencies
屋根の下に配置しようとして 36 時間近く費やした結果、最初の懸念が正しかったと感じています。
私が見つけたのは、JS 依存関係 3、4、または 5 に到達するまでに、ばかげたタイムキル ループに陥り始めることです。
1.「ああ、webjar の依存関係と同じ名前のランダムなファイルがあったため、fastOptJS が失敗しました!」
[trace] Stack trace suppressed: run last client/compile:resolvedJSDependencies for the full output.
[error] (client/compile:resolvedJSDependencies) org.scalajs.core.tools.jsdep.JSLibResolveException: Some references to JS libraries could not be resolved:
[error] - Ambiguous reference to a JS library: bootstrap.min.js
[error] Possible paths found on the classpath:
[error] - META-INF/resources/webjars/bootstrap/3.3.6/js/bootstrap.min.js
[error] - META-INF/resources/webjars/bootstrap3-dialog/1.34.4/examples/assets/bootstrap/js/bootstrap.min.js
[error] originating from: client:compile, client:compile, client:compile, client:compile
[error] - Ambiguous reference to a JS library: bootstrap.js
[error] Possible paths found on the classpath:
[error] - META-INF/resources/webjars/bootstrap3-dialog/1.34.4/examples/assets/bootstrap/js/bootstrap.js
[error] - META-INF/resources/webjars/bootstrap/3.3.6/js/bootstrap.js
[error] originating from: client:compile, client:compile, client:compile, client:compile
2. やるべきことはわかった!定義済みの js にバージョンを追加します。
lazy val webjarbs = "org.webjars" % "bootstrap" % version.bootstrap / s"${version.bootstrap}/bootstrap.js" minified s"${version.bootstrap}/bootstrap.min.js" dependsOn "jquery.js" commonJSName "bootstrap"
3. 「いやだ! fastOptJS が失敗した!」
[trace] Stack trace suppressed: run last client/compile:resolvedJSDependencies for the full output.
[error] (client/compile:resolvedJSDependencies) org.scalajs.core.tools.jsdep.JSLibResolveException: Some references to JS libraries could not be resolved:
[error] - Missing JS library: 3.3.6/bootstrap.js
[error] originating from: client:compile, client:compile, client:compile, client:compile
[error] - Missing JS library: 3.3.6/bootstrap.min.js
[error] originating from: client:compile, client:compile, client:compile, client:compile
ggの男の子。
これは何度も何度も何度も繰り返され、それから私はやり始めなければなりません
lazy val bs_sidebar = ( "org.webjars" % "bootstrap-sidebar" % version.bs_sidebar intransitive()) / "js/sidebar.js" dependsOn(s"bootstrap.js", s"bootstrap.min.js")
そして今、私は実際にはwebjarを使用していませんが、Xという名前のjs依存関係があり、それを変更することはできません...
質問
うーん?以前と同じように、アプリなしで依存関係を巨大なファイルまたはファイルのセットにビルドし、それをビルドにフィードした場合はどうなりますか? 私はオンラインからの概念実証を持っていて、それを機能させました( https://github.com/wav/material-ui-scalajs-react/blob/master/src/main/scala/wav/web/だったと思いますmuiwrapper/package.scala ) はほとんど機能し、私にアイデアを与えてくれました。
npm
よりもはるかにうまく機能することはわかってsbt,
いますが、それでもパッケージに入れることができます...マイナス面は何ですか? sbt について何か不足していますか?