【发布时间】:2019-05-23 07:20:14
【问题描述】:
在这个项目中:
https://github.com/tribbloid/scalajs-cli-demo
我使用 npm 和 sbt 的组合定义了一个 scalajs 项目,在 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 时,我在日志中得到以下错误信息:
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 插件是如何导出这个文件名的呢?我应该怎么做才能纠正它?
【问题讨论】:
标签: npm sbt npm-install scala.js