npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mozu-require-compiler

v3.0.2

Published

RequireJS compiler, customized for Mozu.

Downloads

605

Readme

r.js

A command line tool for running JavaScript scripts that use the Asychronous Module Defintion API (AMD) for declaring and using JavaScript modules and regular JavaScript script files.

It is part of the RequireJS project, and works with the RequireJS implementation of AMD.

r.js is a single script that has two major functions:

Installation

Node

npm install -g requirejs

From then on, you can use r.js on the command line to run the optimizer.

Rhino/Browser

Download the latest release from the RequireJS download page.

xpcshell

xpcshell support was added in r.js version 2.1.5, so use that r.js version or later.

Download the latest release of r.js from the RequireJS download page.

From this repo

r.js is made up of a series of modules that are built into one file for distribution. The dist directory contains the built version of the code. In the master branch, it should match the current state of the master code.

If you are doing local modifications from a clone of this repo, you can run the following command to generate an r.js at the root of this repo:

node dist.js

To generate an r.js that also gets copied to dist with a time stamp, run:

./copydist.js

Running AMD-based projects

If your JS project's main application file is called main.js, then do the following:

Node

r.js main.js

Requires Node 0.4 or later.

r.js allows using Node modules installed via npm. For more info see the Use with Node docs.

Java

Java requires some JAR files in the CLASSPATH for it to work:

Download those files to your machine. To run r.js, you can use this type of command:

OS X/Linux/Unix:

java -classpath path/to/rhino/js.jar:path/to/closure/compiler.jar org.mozilla.javascript.tools.shell.Main r.js main.js

Windows

java -classpath path/to/rhino/js.jar;path/to/closure/compiler.jar org.mozilla.javascript.tools.shell.Main r.js main.js

If you want to run it in the debugger, replace org.mozilla.javascript.tools.shell.Main with org.mozilla.javascript.tools.debugger.Main.

All further examples will use the Node notation, but substitute r.js in the commands with the appropriate java command.

xpcshell

To run the optimizer using a build config file or command line build options:

path/to/xpcshell path/to/r.js -o buildconfig.js

r.js can also be used as a library in another .js file run via xpcshell.

Optimizer

The optimizer can be run by passing the -o command to r.js:

r.js -o path/to/buildconfig.js

See the Optimization doc for more information on the optimizer.

If running in Java, be sure to grab the Rhino and Closure Compiler jar files in the lib/ directory, then run this command:

OS X/Linux/Unix:

java -classpath path/to/rhino/js.jar:path/to/closure/compiler.jar org.mozilla.javascript.tools.shell.Main r.js -o path/to/buildconfig.js

Windows

java -classpath path/to/rhino/js.jar;path/to/closure/compiler.jar org.mozilla.javascript.tools.shell.Main r.js -o path/to/buildconfig.js

What makes it special

The optimizer is better than using a plain concatenation script because it runs require.js as part of the optimization, so it knows how to:

  • Use Loader Plugins to load non-script dependencies and inline them in built files.
  • Name anonymous modules. If your optimization step does not do this, and you use anonymous modules, you will get errors running the built code.

Other r.js commands

Get Version

To get the version of r.js and the version of require.js used by r.js:

r.js -v

Convert CommonJS modules

To convert a directory of CommonJS modules to ones that have define() wrappers:

r.js -convert path/to/commonjs/dir output/dir

Most, but not all, CommonJS modules can be converted to define()-wrapped modules and still work.

However, there are some modules that may fail if:

  • They use code branches like if/else or try/catch to call require(). There are problems supporting this kind of dynamic module calls in an async environment.
  • Some kinds of circular dependencies will not work right. The kinds that fail are normally very brittle and depend on the execution order of the dependent modules.

Directory layout

Directory prerequisites

r.js assumes that there are some other projects checked out as sibling directories to it, and named certain names, in order for the tests to pass.

So it is best to create the following directory structure with the following git clone commands:

mkdir requirejs
cd requirejs
git clone git://github.com/jrburke/r.js.git
git clone git://github.com/jrburke/requirejs.git
git clone git://github.com/requirejs/text.git

So there should be a sibling requirejs and text directories to the r.js directory containing your clone of the r.js project.

Directory details

The r.js project has the following directory layout:

  • dist.js: the script that builds r.js
  • require.js: the version of require.js to include in r.js
  • dist the directory containing releases of r.js
  • build: The files that make up the optimizer. dist.js includes a list of the files from this directory to build into r.js.
  • lib: The Java libraries for Rhino and Closure Compiler. Only needed if using Java/Rhino to run r.js
  • tests: command line tests. Run it under Node and Rhino by doing ../r.js all.js

dist.js takes the build/jslib/x.js file and injects the require.js files and other files from the build/jslib directory into it.

If you make changes to any of those files, you will need to run node dist.js to generate a new r.js. Be sure to run it through the tests , using both Node and Java/Rhino:

* node dist.js
* cd tests
* node ../r.js all.js
* java -classpath ../lib/rhino/js.jar:../lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main ../r.js all.js
* cd ../build/tests
* node ../../r.js all.js
* java -classpath ../../lib/rhino/js.jar:../../lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main ../../r.js all.js

For running tests, put xpcshell in env/xpcshell/ as a directory, that contains all the files needed for it to run, including the xpcshell binary.

Contributing code changes

See the RequireJS Contributing page for info on how to contribute code/bug fixes to this project.

Use GitHub pull requests to point to code changes, although for larger changes, contact the requirejs mailing list to discuss them first.

Included libraries

r.js includes modules from these projects:

Doing a release

To do a release of version 0.0.0:

  • git checkout -b 0.0.0
  • Make sure the right version of require.js is in the project.
  • Modify build/jslib/x.js to update the r.js version number in two places.
  • node dist.js
  • Run the tests (see above). They should pass. :)
  • mv r.js dist/r-0.0.0.js
  • git add dist/r-0.0.0.js
  • git commit -a -m "Release 0.0.0"
  • git tag -am "Release 0.0.0" 0.0.0
  • git checkout master
  • git merge 0.0.0
  • git push origin master
  • git push --tags
  • git branch -d 0.0.0

Update the RequireJS download site to point to the latest release.