nodefy

convert AMD modules into a node.js compatible format

nodefy

convert AMD modules into a node.js compatible format.

This tool uses Esprima to parse the code and replace define() calls, doing the less amount of changes as possible to the code.

define(['foo', '../bar/baz'], function(foobaz){
 
    var lorem = 'ipsum';
 
    return {
        log : function(){
            console.log(lorem);
        }
    };
 
});
    var foo = require('foo');
    var baz = require('../bar/baz');
 
    var lorem = 'ipsum';
 
    module.exports = {
        log : function(){
            console.log(lorem);
        }
    };

You can use it as a CLI tool:

[sudo] npm install -g nodefy
nodefy -o cjs "src/**.js"

This will convert all ".js" files inside the src folder and put the results on the cjs folder.

It also works with stdin and stdout:

cat "src/foo.js" | nodefy

For a list of available options run:

nodefy -h

It is also available as a regular node.js library.

var nodefy = require('nodefy');
 
// nodefy.parse(string) 
// returns node.js style module 
var cjsModule = nodefy.parse(jsString);
 
// nodefy.convert(inputPath [, outputPath], callback) 
// if outputPath is omitted it won't write the result 
nodefy.convert('foo.js', function(errresult){
    console.log(result);
});
 
// nodefy.batchConvert(glob [, outputFolder], callback) 
// if outputFolder is omitted it won't write the result 
nodefy.batchConvert('src/**.js', 'cjs', function(errresults){
    // results is an array of {sourcePath, outputPath, result} 
});

I couldn't find any tool that did what I wanted - convert AMD modules into plain node.js - so I decided to code my own. There are alternatives but they all add more complexity than I wanted.

This project was created mainly because of amd-utils, since many methods are useful on both environments.

The name was inpired by browserify.

Released under the MIT license