rjs_converter
This package contains a function that takes in a require.js AMD module that uses the "CommonJS" style of requiring dependencies (an example below) and converts it into the regular AMD style.
This is handy if you perform any post-processing on built AMD modules (such as i18n extraction) and you want all the input to follow the same format.
Example CommonJS-style AMD module:
;
Equivalent AMD module:
;
Usage
var convert = ;var fs = ; var cjsLikeContents = fs;var amdLikeContents = ;
Using as a r.js optimizer processor
The script is perfect for use in the onBuildWrite
hook that r.js provides you when running the optimizer.
var convert = ; requirejs;
Notes
The function is a NO-OP on modules that do not use the CommonJS-style. E.g, it will not modify any of the following:
// 1; // 1.1; // 1.2; // 2;
Also, the function makes the following assumptions when it's supposed to work. If they're not met, behavior is undefined:
- Dependencies are expected to be declared in the very beginning of the script block. Meaning, the
var x = require('x');
lines should be the first thing you write. I believe this is done by r.js automatically before passing the contents toonBuilWrite
but I didn't investigate much. - You map each dependency to a variable. Like, there should be no
require('x');
statements that do not assign the return value of the module to a variable.
Checking the output
You can use the binary rjs_convert
to test the function on a single file. The converted output will be logged to STDOUT.
npm run rjs_convert path/to/file.js
LICENSE
MIT