/jvm-npm

NPM compliant CommonJS module loader for the JVM

Primary LanguageJava

jvm-npm

Support for NPM module loading in Javascript runtimes on the JVM.

Implementation is based on [http://nodejs.org/api/modules.html] and should be fully compatible. This, of course, does not include the full node.js API, so don't expect all of the standard NPM modules that depend on it to work.

If you are writing your own NPM modules in DynJS, Rhino or Nashorn, this should work just fine.

Note:

DynJS implementation is currently considered legacy, so it is suggested to use it with Rhino and/or Nashorn

Usage

Nashorn

To enable JVM-NPM for Nashorn in your project add dependency below

    <dependency>
        <groupId>org.bsc</groupId>
        <artifactId>jvm-npm-core</artifactId>
        <version>${jvmnpm.version}</version>
    </dependency>

and in your code load module

    final ScriptEngineManager manager = new ScriptEngineManager();
	
	final ScriptEngine service = manager.getEngineByName("nashorn");
	
	service.eval( "load('classpath:jvm-npm.js');");

Rhino

To enable JVM-NPM for Rhino in your project add dependencies below

    <dependency>
        <groupId>org.bsc</groupId>
        <artifactId>jvm-npm-core</artifactId>
        <version>${jvmnpm.version}</version>
    </dependency>
    
    <dependency>
        <groupId>org.bsc</groupId>
        <artifactId>jvm-npm-rhino</artifactId>
        <version>${jvmnpm.version}</version>
    </dependency>
    

and in your code load module

    final ScriptEngineManager manager = new ScriptEngineManager();
	
	final ScriptEngine service = manager.getEngineByName("rhino-npm");
	
	service.eval( "load('classpath:jvm-npm.js');");

JDK7

If you need run on JRE7 then include deps

    <dependency>
        <groupId>org.bsc</groupId>
        <artifactId>jvm-npm-core</artifactId>
        <version>${jvmnpm.version}</version>
    </dependency>
    
    <dependency>
        <groupId>org.bsc</groupId>
        <artifactId>jvm-npm-rhino</artifactId>
        <version>${jvmnpm.version}</version>
        <classifier>jdk7</classifier>
    </dependency>
    

Debug

set system property jvm-npm.debug at true