Installation
composer require ekyna/require-js-bundle
Add the bundle to config/bundles.php:
Ekyna\RequireJsBundle\EkynaRequireJsBundle::class => ['all' => true],
Basic Configuration
Override the default config in config/packages/ekyna_require_js.yaml:
ekyna_require_js:
base_url: '%kernel.project_dir%/web/js'
packages:
app:
path: 'vendor/ekyna/require-js-bundle/Resources/public/js'
main: 'app'
First Use Case
Add a script to your base template (templates/base.html.twig):
{{ ekyna_require_js('app') }}
This renders a <script> tag for RequireJS with the configured main module.
// src/Resources/public/js/app.js
define(['jquery', 'underscored'], function($, _) {
// Logic here
});
web/js/ or src/Resources/public/js/ and reference them via:
{{ ekyna_require_js('app', {
'paths': {
'text': 'vendor/requirejs-text/text'
}
}) }}
{% if user.isAdmin %}
{{ ekyna_require_js('admin-panel') }}
{% endif %}
kernel.controller).debug: true in config to enable RequireJS’s debug mode../vendor/bin/r.js -o name=almond baseUrl=web/js out=build.js
base_url in config points to a web-accessible directory (e.g., web/js/). Relative paths (e.g., ../js/) may break in production.my-package → my_package). RequireJS uses camelCase internally.path in config matches the filesystem. Use absolute paths if needed:
packages:
app:
path: '%kernel.project_dir%/web/js'
web/js/app.js).main config points to a valid entry file.jquery vs. jQuery).EkynaRequireJsBundle:default:script.js.twig) to modify output.kernel.request event to inject dynamic configs:
// src/EventListener/RequireJsListener.php
public function onKernelRequest(GetResponseEvent $event) {
$this->container->get('ekyna_require_js.config')->addConfig(['shim': ['jquery': { 'exports': 'jQuery' }]]);
}
ekyna_require_js:
plugins:
text: 'vendor/requirejs-text/text'
How can I help you explore Laravel packages today?