
static.js.vendor.modernizr.lib.build.js Maven / Gradle / Ivy
The newest version!
// this file configures require.js based on enviroment
'use strict';
/* jshint -W117 */
var inBrowser = typeof define == 'function' && typeof define.amd == 'object';
/* jshint -W117 */
var _extend = function(a, b) {
for (var prop in b) {
var supplied = b[prop];
if (typeof supplied === 'object') {
a[prop] == a[prop] || {};
_extend(a[prop], supplied);
} else {
a[prop] = b[prop];
}
}
};
var requireConfig = {
optimize: 'none',
generateSourceMaps: false,
optimizeCss: 'none',
useStrict: true,
include: ['modernizr-init'],
fileExclusionRegExp: /^(.git|node_modules|modulizr|media|test)$/,
wrap: {
start: '\n;(function(window, document, undefined){',
end: '})(window, document);'
},
onBuildWrite: function(id, path, contents) {
if (this.optimize === 'uglify2') {
// strip out documentation comments
contents = contents.replace(/\/\*\![\s\S]*\!\*\//m, '');
}
if ((/define\(.*?\{/).test(contents)) {
// remove AMD ceremony for use without require.js or almond.js
contents = contents.replace(/define\(.*?\{/, '');
contents = contents.replace(/\}\);\s*?$/, '');
if (!contents.match(/Modernizr\.add(Async)?Test\(/)) {
// remove last return statement and trailing })
contents = contents.replace(/return.*[^return]*$/, '');
}
} else if ((/require\([^\{]*?\{/).test(contents)) {
contents = contents.replace(/require[^\{]+\{/, '');
contents = contents.replace(/\}\);\s*$/, '');
}
contents = contents.replace(/return addTest;/, '');
return contents;
}
};
function build(generate, generateBanner, pkg) {
return function build(config, cb) {
config = config || {};
cb = cb || function noop() {};
var banner;
requireConfig.rawText = {
'modernizr-init': generate(config)
};
if (config.minify) {
banner = generateBanner('compact', config);
requireConfig.optimize = 'uglify2';
requireConfig.uglify2 = {
mangle: {
except: ['Modernizr']
},
beautify: {
ascii_only: true
}
};
} else {
banner = generateBanner('full', config);
requireConfig.optimize = 'none';
}
requireConfig.out = function(output) {
output = banner + output;
// Remove `define('modernizr-init' ...)` and `define('modernizr-build' ...)`
output = output.replace(/(,\s*)?define\("modernizr-(init|build)",\s*function\(\)\{\};?\)/g, '');
output = output.replace(/__VERSION__/g, pkg.version);
// Hack the prefix into place. Anything is way too big for something so small.
if (config && config.classPrefix) {
output = output.replace(/(classPrefix'?\s?:\s?)['""']{2}(,)/, '$1"' + config.classPrefix.replace(/"/g, '\\"') + '"$2');
}
cb(output);
};
requirejs.optimize(requireConfig);
};
}
if (inBrowser) {
var suppliedConfig = self._modernizrConfig;
var metadataUrl = 'i/js/metadata.json';
var packageUrl = 'i/js/modernizr-git/package.json';
requireConfig.baseUrl = '/i/js/modernizr-git/src';
requireConfig.paths = {
text: '/i/js/requirejs-plugins/lib/text',
lib: '/i/js/modernizr-git/lib',
json: '/i/js/requirejs-plugins/src/json',
lodash: '/i/js/lodash',
test: '/i/js/modernizr-git/feature-detects'
};
if (suppliedConfig) {
metadataUrl = suppliedConfig.metadataUrl || metadataUrl;
packageUrl = suppliedConfig.packageUrl || packageUrl;
_extend(requireConfig, suppliedConfig);
}
if (self._modernizrMetadata) {
requirejs.define('metadata', [], function() {return self._modernizrMetadata;});
} else {
requirejs.define('metadata', ['json!' + metadataUrl], function(pkg) {return pkg;});
}
requirejs.define('package', ['json!' + packageUrl], function(pkg) {return pkg;});
} else {
var requirejs = require('requirejs');
var metadata = require('./metadata')();
var pkg = require('../package.json');
requirejs.define('metadata', [], function() {return metadata;});
requirejs.define('package', function() {return pkg;});
requireConfig.baseUrl = __dirname + '/../src';
requireConfig.paths = {
lodash: __dirname + '/../node_modules/lodash/index',
test: __dirname + '/../feature-detects',
lib: __dirname
};
}
requirejs.config(requireConfig);
if (inBrowser) {
define('build', ['generate', 'lib/generate-banner', 'package'], build);
} else {
var generateBanner = requirejs(__dirname + '/generate-banner.js');
var generate = requirejs('generate');
var pkg = requirejs('package');
var _build = build;
module.exports = function build() {
return _build(generate, generateBanner, pkg).apply(undefined, arguments);
};
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy