Latest Release§ 1

If you want 1.0: Link to 1.0.

require.js 2.1.15 Minified With Comments

All you need to start using require.js in the browser.

r.js: Optimizer and Node/Rhino/xpcshell adapter Download

The r.js file allows you to run the optimizer as well as run modules in Node, Rhino or xpcshell.

If you are running in Node, and want to use npm to install this file via npm, see the Use with Node page for more information.

For information on its use, as well as how to get the JAR files to run it under Rhino, see the r.js README.

Plugins§ 2

These are useful loader plugins that have the same license terms as require.js itself. Download the plugin file and place it as a sibling to your "data-main" main.js script.

text Download

Load text files and treat them as dependencies. Great for loading templates. The text strings can be inlined in an optimized build when the optimizer is used.

domReady Download

Wait for the DOM is ready. Useful for pausing execution of top level application logic until the DOM is ready for querying/modification.

cs (CoffeeScript) Download

Load files written in CoffeeScript. With this plugin, it is easy to code in CoffeeScript in the browser, it can participate in the optimizer optimizations, and it works in Node and Rhino via the RequireJS adapter. This is the best way to do cross-environment, modular CoffeeScript. The project home has more information on how to install and use it.

i18n Download

Load string bundles used in internationalization (i18n) that are made up of separate country/language/locale-specific bundles.

Release Notes§ 3

2.1.15

Mainly fixes a regression from 2.1.14 in the r.js optimizer where some define() calls were not found. The most common manifestations of the bug would be either an extra define('jquery', function(){}) in the build output or namespaced builds not working. The fixes for 2.1.15 are just in the optimizer. Full list of changes:

2.1.14

A couple more regression fixes for 2.1.12. One to fix nested plugin ID normalization, like "pluginA!pluginbB!resource", and one for the optimizer incorrectly detecting UMD wrapped code.

2.1.13

Version 2.1.12 regressed around ID normalization. 2.1.13 fixes that regression, and it is recommended that you do not use 2.1.12, but use 2.1.13 instead.

2.1.12

Just a bug fix/maintenance release. Full list of changes:

2.1.11

Some bug fixes, with the most notable addition is an optimizer option, wrapShim. This will wrap shimmed dependencies in a define() call so that they work better after a build when their upstream dependencies are also AMD modules with dependencies.

The most notable case is probably when using an AMD-aware version of Backbone, but using shim config for scripts that depend on Backbone. If this is your use case, then setting wrapShim: true in the optimizer config will likely fix any post-build problem you might see. More details in the bug ticket.

Full list of changes:

2.1.10

Mainly a maintenance release, and improves some cases when reusing code that was installed via npm. There are two new config options for the loader too:

  • nodeIdCompat: some node modules installed by npm use module IDs like example.js and example interchangeably. Setting this config option to true will accommodate that style. almond 0.2.9+ also supports this option.
  • bundles: a more compact way to list a set of module IDs belonging to a bundle ID, and supports loader plugin resource IDs.

And for the optimizer, the mainConfigFile option can now take an array of file paths that have configs in them. Later values take precedent over earlier values.

Full list of changes:

2.1.9

Full list of changes:

Mainly a maintenance release to fix bugs. There is a new skipDataMain option in require.js to avoid the data-main work, which can be useful for browser extensions that should let the main content page's requirejs handle the data-main.

2.1.8

A small release to fix an optimizer issue with parsing config calls for modifications.

2.1.7

The main changes for this release:

  • For xpcshell, the optimizer uses the built in Reflect parser API instead of Esprima. xpcshell, on Linux and Windows in particular, has a constrained stack, and normal Esprima use was not possible. To accommodate this change, some of the parsing approaches used internally by r.js moved away from token scanning to tree walking. The only visible output change you may see is different use of space characters in transformed code.
  • The source map support was updated to use the new //# syntax as specified by the spec. This change is still making its way through the browsers, so if you need source map or sourceURL support with 2.1.7, you may need to use Firefox Aurora or Chrome Canary channels. The browser support levels should get better in around six weeks time.

Full list of changes:

2.1.6

Source map support has been expanded. Previously, it was just supported for going from minified, bundled code to the unminified, bundled code. If optimize: 'uglify2' is used, it will now go back to the separated, unbundled files.

Source map support is still considered experimental though, so you may find bugs. If you find one, file an r.js issue, ideally with a test case.

Full list of changes:

2.1.5

Biggest change is support for running the optimizer and loading AMD modules in xpcshell. Other than that, just a maintenance release.

Full list of changes:

2.1.4

Quick release for a bug that slipped in the 2.1.3 release in the r.js optimizer. So even though require.js now has a 2.1.4 version, it is the same as 2.1.3, and the optimizer is the same as 2.1.3 except for this one fix:

  • Bug 356: cssPrefix normalization always needs to happen

Without this fix, in some cases 2.1.3 would insert "undefined" in some optimized CSS files, making them unusable.

2.1.3

Maintenance release. A change that may be noticeable:

require.toUrl() now correctly generates URLs for string values passed to it without an extension. Previous versions of toUrl() would append a ".js" extension automatically. If you relied on that behavior, when you update to 2.1.3, then you may need to do a code change to append the .js extension yourself:

require.toUrl('some/value') + '.js'

The text plugin has been updated to also work with this change, so if you want to generate non-extension paths for text resources, be sure to upgrade to to the 2.0.4 version of text.js.

Normal use of toUrl with a value that has an extension continues to work the same.

Full list of changes:

2.1.2

The big changes for this release are in the optimizer:

  • The optimizer can now run in the browser, to enable web-based custom builds of your library.
  • "uglify2" is an allowed "optimize" value now, using UglifyJS 2.1.11.
  • Experimental support for source maps.
  • The optimizer runs faster now, and has some speed options.

Full list of changes:

2.1.1

2.1.0

See the Upgrading to 2.1 page.

2.0.6

The main focus of this release was cleaning up some rough edges after switching to esprima for all module parsing. Most notably, findNestedDependencies should work correctly again. The bundled UglifyJS was updated to 1.3.3 too.

Complete list of fixes:

2.0.5

Probably the most notable changes:

Complete list of fixes:

2.0.4

Same as 2.0.3, but rolled back a change in r.js that caused a logging error.

2.0.3

2.0.2

2.0.1

2.0.0

1.0.8

Small bug fixes to:

1.0.7

Small bug fixes to:

1.0.6

Main purpose of the release is to fix a regression in 1.0.5 where the optimizer's "dir" config option was not applied correctly when passed on the command line.

The other notable change: the optimizer now supports onBuildRead and onBuildWrite functions that are called when JS modules are read or written for an optimized build layer. This allows doing some regexp work to modify their contents.

Small bug fixes to:

1.0.5

Small bug fixes to:

1.0.4

Small bug fixes to:

1.0.3

Small bug fixes to:

1.0.2

Small bug fixes to:

1.0.1

Just small bug fixes related to:

  • allowing full URLs for simplified CommonJS wrapped modules
  • AST parsing of dependencies for modules that use a variable for the factory function
  • catching more cases that should have the "namespace" optimizer option applied

Detailed list of changes for require.js and the r.js optimizer: