{"library":"requirejs","title":"RequireJS","description":"RequireJS is a foundational JavaScript file and module loader, primarily designed for asynchronous module definition (AMD) in web browsers, which was crucial for managing dependencies and organizing code before native ES Modules (ESM) were widely adopted. The `requirejs` npm package provides a Node.js adapter, `r.js`, which serves as both an AMD runtime for server-side execution and a powerful optimizer for bundling and minifying browser-side AMD modules. Its current stable version is 2.3.8, last published in November 2025. While it has received infrequent updates for critical fixes (e.g., a prototype pollution vulnerability fix in 2.3.7), its lead maintainer has indicated it's in \"end of life mode\" for new feature development. RequireJS differentiates itself by offering a consistent module format across browser and Node environments, simplifying build processes for complex web applications. However, its relevance has significantly diminished with the pervasive support for ES Modules in modern JavaScript ecosystems, which offer more efficient loading and static analysis capabilities without needing a separate loader or optimizer in many scenarios.","language":"javascript","status":"maintenance","last_verified":"Sun Apr 19","install":{"commands":["npm install requirejs"],"cli":{"name":"r.js","version":null}},"imports":["const requirejs = require('requirejs');","// In an AMD module file:\ndefine(['dependency'], function(dependency) { /* ... */ });","// In an AMD module file:\nrequire(['dependency'], function(dependency) { /* ... */ });"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"const requirejs = require('requirejs');\nconst path = require('path');\nconst fs = require('fs');\n\n// 1. Define sample AMD modules\nfs.writeFileSync('dep.js', `define(function() { return { value: 'I am a dependency!' }; });`);\nfs.writeFileSync('main.js', `define(['./dep'], function(dep) { return { message: 'Hello from main! Dep says: ' + dep.value }; });`);\n\n// 2. Configure requirejs for Node.js to load AMD modules\nrequirejs.config({\n  baseUrl: __dirname, // Current directory as base for AMD modules\n  nodeRequire: require // Pass Node's require to enable fallback for non-AMD modules\n});\n\n// 3. Load an AMD module using the configured requirejs instance\nrequirejs(['main'], function(mainModule) {\n  console.log('AMD Module loaded:', mainModule.message);\n});\n\n// 4. Using the optimizer programmatically\nconst buildConfig = {\n  baseUrl: __dirname,\n  name: 'main', // The main module to optimize\n  out: path.join(__dirname, 'main-built.js'), // Output file\n  optimize: 'none', // For demonstration, keep it unminified\n  paths: {\n    dep: './dep' // Ensure optimizer knows about relative paths\n  }\n};\n\nrequirejs.optimize(buildConfig, function (buildResponse) {\n  console.log('\\n--- Build Optimization Complete ---');\n  console.log(buildResponse);\n  const builtContent = fs.readFileSync(buildConfig.out, 'utf8');\n  console.log('\\nContent of main-built.js (first 500 chars):\\n', builtContent.substring(0, 500), '...');\n\n  // Clean up generated files\n  fs.unlinkSync('dep.js');\n  fs.unlinkSync('main.js');\n  fs.unlinkSync('main-built.js');\n\n}, function (err) {\n  console.error('\\nRequireJS Optimizer Error:', err);\n  // Clean up in case of error too\n  if (fs.existsSync('dep.js')) fs.unlinkSync('dep.js');\n  if (fs.existsSync('main.js')) fs.unlinkSync('main.js');\n  if (fs.existsSync('main-built.js')) fs.unlinkSync('main-built.js');\n});","lang":"javascript","description":"This quickstart demonstrates how to use the `requirejs` npm package in Node.js to load a simple AMD module and programmatically run the `r.js` optimizer to bundle modules.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}