This is a JVM wrapper around the Node Package Manager (NPM). The NPM that is run is the real NPM. The JS Engine project is used to execute NPM using Node itself.
A WebJar is used to download the NPM source files.
Some sample usage from Scala:
val engine = system.actorOf(Node.props(), "engine")
val to = new File(new File("target"), "webjars")
val npm = new Npm(engine, NpmLoader.load(to, Main.getClass.getClassLoader))
for (
result <- npm.update() // Perform an "npm update"
) {
println(s"status\n======\n${result.exitValue}\n")
println(s"output\n======\n${new String(result.output.toArray, "UTF-8")}\n")
println(s"error\n=====\n${new String(result.error.toArray, "UTF-8")}\n")