replace!
plugin
The replace!
plugin is used to replace a pattern
by a value
in a module path before it's loaded.
The main usage is to load localized (i18n) scripts for any dependencie you use (like jQuery.Validation
or Moment.js
) or third party localized SDKs (like the Facebook JS SDK).
replace!
has been tested with the require.js v2.1.* series.
replace!
takes a config object where you set the pattern
to be replaced by the value
.
require.config({ config: { replace: { pattern : "NLS", value : "fr_CA" } }, paths: { facebook: "//connect.facebook.net/NLS/all.js" } }); require(["replace!facebook"]); // Will load: //connect.facebook.net/fr_CA/all.js
You can also set specific pattern
and value
options for each module.
require.config({ config: { replace: { facebook: { pattern : 'NLS', value : "fr_CA" }, moment: { pattern : 'NLS', value : "fr_CA" } } }, paths: { facebook: "//connect.facebook.net/NLS/all.js", moment: "components/NLS/moment.js" } });
Localized plugins like jQuery.Validation
or Moment.js
comes with built-in locales and extra locales in separate files. To ease built-in locales declaration, you can setup replace!
to ignore speficied locales for a module.
var locale; require.config({ config: { replace: { pattern: "nls", value: function() { return locale; }, ignore: [ "en_US" ] } } }); locale = "fr_CA"; require(["replace!nls/locale.js"]); // Will load `fr_CA/locale.js` locale = "en_US"; require(["replace!nls/locale.js"], function( ref ) { /**/ }); // Won't load any module, and will pass `undefined` as `ref` value.
pattern required : Can be any String
or RegExp
. The pattern
will be used inside javascript String.replace()
function.
value required : May be a String
or a Function
returning a String
(or a variable referencing a string). Adding the value as a Function
may protect the build from failing if an unreachable object is used as value.
ignore : an Array
containing each locale to ignore when requested.
<!-- index.html --> <script type="text/javascript"> window.appData = { user: { locale: "fr_CA" } } </script>
// config.js require.config({ config: { replace: { facebook: { pattern : 'NLS', value : function() { return window.appData.user.locale; } } } }, paths: { facebook: "//connect.facebook.net/NLS/all.js" } });
By default, modules required via replace!
will be ignored during the build process.
To include module in the build, you need to set the optimize
option to true
.
requirejs.optimize({ replace: { pattern: "NLS", value: "fr_CA", optimize: true } });
Make sure to checkout the test/mocha/node.js
file for an optimisation example.
(This setting will work with different RequireJS building tools; e.g. grunt-contrib-requirejs, etc)
Please follow idiomatic.js style guidelines in your commits. Add unit tests for any new or changed functionality. Lint and test your code using grunt.
12/03/2013 - v0.3.0 - Add support build system and ignored values
24/09/2012 - v0.2.0 - Add support for named inlined module
06/07/2012 - v0.1.0 - First release
Copyright (c) 2012 Simon Boudrias
Licensed under the MIT license.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4