Kiedy po raz pierwszy odkryłem webJars kilka miesięcy temu, byłem super-sceptyczny, że byłby to opłacalny sposób na obsługę zależności po stronie klienta, biorąc pod uwagę ogromną złożoność niektórych z tych buildów/systemów konstrukcyjnych, i biorąc pod uwagę częstotliwość, z jaką pliki js
są publikowane. Druga troska była oczywiście nieuzasadniona, ale czuję się usprawiedliwiona po tym, jak spędziłem prawie 36 godzin, próbując bezskutecznie uzyskać około 10 scss/css/less
-tyświatów sieci web i 8 JS sieciowych pod jednym dachem jsDependencies
.W kompilacji ScalaJs sbt, czy jest jakaś korzyść używać webjars zamiast npm lub altana z "Provided"?
Co znalazłem jako że do czasu można dotrzeć JS zależność 3, 4 lub 5, zaczną się w śmiesznej pętli timekill:
1. „Och nos fastOptJS powiodło się, ponieważ nie było pewne losowy plik! to też było nazywane tak samo jak zależność w webjar! "
[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. Wiem, co robić! Dodam wersję do zdefiniowanego 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. "O nie! FastOptJS nie powiodło się!"
[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 boys.
idzie to w kółko i w kółko, a potem muszę zacząć robić
lazy val bs_sidebar = ("org.webjars" % "bootstrap-sidebar" % version.bs_sidebar intransitive())/"js/sidebar.js" dependsOn(s"bootstrap.js", s"bootstrap.min.js")
i teraz nie jestem nawet za pomocą webjar, ale ma js zależność nazwie X i nie mogę tego zmienić ...
Pytanie
Hmmm? Co zrobić, jeśli zrobiłem to, co robiłem, ale budowałem zależności bez aplikacji w jakiś gigantyczny plik lub zbiór plików, a następnie dodawałem je do kompilacji? Mam proof of concept z Internetu i dostałem go (myślę, że to był https://github.com/wav/material-ui-scalajs-react/blob/master/src/main/scala/wav/web/muiwrapper/package.scala), który prawie działał i dał mi pomysł.
wiem npm
działa dużo lepiej niż sbt,
i nadal nie mogę dostać się do mojego pakietu ... co jest wadą, a jestem brakuje czegoś o SBT?
Jak do tego pasuje [ostatnio ogłaszany scalajs-bundler] (http://get-scala.org/blog/2016/10/19/scalajs-bundler.html)? Idąc do przodu, lub do innych, niebanalnych aplikacji, powinieneś przeprowadzić migrację z jsDependencies na npmDependencies? – Grogs
Oczekuje się, że najbardziej złożone kompilacje ostatecznie przeniosą się na coś bardziej zasadniczego niż "jsDependencies". 'npmDependencies' jest zdecydowanie jedną z opcji. – sjrd