В этом проекте:
https://github.com/tribbloid/scalajs-cli-demo
Я определил проект scalajs, используя комбинацию npm и sbt, внутри файла пакета npm я объявляю sbt как скрипт предварительной публикации:
"scripts": {
"prepublish": "sbt 'show fullOptJS' && cp target/scala-2.12/scalajs-cli-demo-opt.js ./lib/main.js",
"test": "sbt test"
},
В определении сборки sbt используется плагин scalajs sbt для извлечения зависимостей и вызова транспортеров:
resolvers += Resolver.sonatypeRepo("releases")
enablePlugins(ScalaJSPlugin)
name := "Scala.js CLI Demo first release"
scalaVersion := "2.12.7"
scalaJSModuleKind := ModuleKind.CommonJSModule
scalaJSUseMainModuleInitializer := true
mainClass in Compile := Some("HelloWorldApp")
// https://mvnrepository.com/artifact/io.scalajs/nodejs
libraryDependencies += "io.scalajs" %%% "nodejs" % "0.4.2"
moduleName in fullOptJS := "scalajs-cli-demo"
Однако, когда я запускаю npm install
, я получаю следующую информацию об ошибке вlog:
67 info lifecycle scalajs-cli-demo@1.0.4~prepublish: Failed to exec prepublish script
68 verbose stack Error: scalajs-cli-demo@1.0.4 prepublish: `sbt 'show fullOptJS' && cp target/scala-2.12/scalajs-cli-demo-opt.js ./lib/main.js`
68 verbose stack Exit status 1
68 verbose stack at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:301:16)
68 verbose stack at EventEmitter.emit (events.js:182:13)
68 verbose stack at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
68 verbose stack at ChildProcess.emit (events.js:182:13)
68 verbose stack at maybeClose (internal/child_process.js:962:16)
68 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:251:5)
69 verbose pkgid scalajs-cli-demo@1.0.4
70 verbose cwd /home/peng/git-release/scalajs-cli-demo
71 verbose Linux 4.19.11-041911-generic
72 verbose argv "/usr/bin/node" "/usr/bin/npm" "install"
73 verbose node v10.14.2
74 verbose npm v6.4.1
75 error code ELIFECYCLE
76 error errno 1
77 error scalajs-cli-demo@1.0.4 prepublish: `sbt 'show fullOptJS' && cp target/scala-2.12/scalajs-cli-demo-opt.js ./lib/main.js`
77 error Exit status 1
78 error Failed at the scalajs-cli-demo@1.0.4 prepublish script.
78 error This is probably not a problem with npm. There is likely additional logging output above.
79 verbose exit [ 1, true ]
Дальнейшие исследования показывают, что файл в команде cp target/scala-2.12/scalajs-cli-demo-opt.js
не существует.
Вместо этого файл называется scala-js-cli-demo-opt.js
, однако я не могу его найти нигде вscalajs sbt плагин, который определяет это имя файла.На самом деле, имя scala-js-cli-demo
даже не существует нигде в моем исходном коде!Итак, как плагин scalajs sbt получает это имя файла?И что я должен сделать, чтобы исправить это?