mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-10 19:07:49 +00:00
Control "use strict" directive use in builds.
Former-commit-id: 66a9bdee5cc61710d7d42d685feba616ec855322
This commit is contained in:
32
build.js
32
build.js
@@ -20,6 +20,9 @@
|
|||||||
/** Flag used to specify a mobile build */
|
/** Flag used to specify a mobile build */
|
||||||
var isMobile = !isLegacy && process.argv.indexOf('mobile') > -1;
|
var isMobile = !isLegacy && process.argv.indexOf('mobile') > -1;
|
||||||
|
|
||||||
|
/** Flag used to specify if the source should be in strict mode */
|
||||||
|
var isStrict = !(isLegacy || isMobile);
|
||||||
|
|
||||||
/** Shortcut used to convert array-like objects to arrays */
|
/** Shortcut used to convert array-like objects to arrays */
|
||||||
var slice = [].slice;
|
var slice = [].slice;
|
||||||
|
|
||||||
@@ -33,6 +36,15 @@
|
|||||||
['isBindFast', 'isKeysFast', 'nativeBind', 'nativeIsArray', 'nativeKeys'].forEach(function(varName) {
|
['isBindFast', 'isKeysFast', 'nativeBind', 'nativeIsArray', 'nativeKeys'].forEach(function(varName) {
|
||||||
source = replaceVar(source, varName, 'false');
|
source = replaceVar(source, varName, 'false');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// remove `useStrict` branch from `iteratorTemplate`
|
||||||
|
source = source.replace(/(?: *\/\/.*\n)*\s*' *<% *if *\(useStrict\).+\n/, '');
|
||||||
|
|
||||||
|
// remove `useStrict` from iterator options
|
||||||
|
source = source.replace(/ *'useStrict': *false,\n/g, '');
|
||||||
|
|
||||||
|
// remove `useStrict` data object property assignment in `createIterator`
|
||||||
|
source = source.replace(/\s*.+?\.useStrict *=.+/, '');
|
||||||
}
|
}
|
||||||
else if (isMobile) {
|
else if (isMobile) {
|
||||||
source = replaceVar(source, 'isKeysFast', 'false');
|
source = replaceVar(source, 'isKeysFast', 'false');
|
||||||
@@ -505,6 +517,17 @@
|
|||||||
.replace(/(?: *\/\/.*\n)*\s*'( *)<% *if *\(isKeysFast[\s\S]+?'\1<% *} *else *\{ *%>.+\n([\s\S]+?) *'\1<% *} *%>.+/, '$2');
|
.replace(/(?: *\/\/.*\n)*\s*'( *)<% *if *\(isKeysFast[\s\S]+?'\1<% *} *else *\{ *%>.+\n([\s\S]+?) *'\1<% *} *%>.+/, '$2');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes the "use strict" directive from `source`.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {String} source The source to process.
|
||||||
|
* @returns {String} Returns the modified source.
|
||||||
|
*/
|
||||||
|
function removeUseStrict(source) {
|
||||||
|
return source.replace(/(["'])use strict\1;( *\n)?/, '');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a given variable from `source`.
|
* Removes a given variable from `source`.
|
||||||
*
|
*
|
||||||
@@ -938,10 +961,19 @@
|
|||||||
// cleanup code
|
// cleanup code
|
||||||
source = source.replace(/^ *;\n/gm, '');
|
source = source.replace(/^ *;\n/gm, '');
|
||||||
|
|
||||||
|
if (!isStrict) {
|
||||||
|
source = removeUseStrict(source);
|
||||||
|
}
|
||||||
|
|
||||||
// begin the minification process
|
// begin the minification process
|
||||||
if (filterType || isBackbone || isLegacy || isMobile) {
|
if (filterType || isBackbone || isLegacy || isMobile) {
|
||||||
fs.writeFileSync(path.join(cwd, 'lodash.custom.js'), source);
|
fs.writeFileSync(path.join(cwd, 'lodash.custom.js'), source);
|
||||||
|
|
||||||
minify(source, 'lodash.custom.min', function(result) {
|
minify(source, 'lodash.custom.min', function(result) {
|
||||||
|
// re-remove "use strict" added by the minifier
|
||||||
|
if (!isStrict) {
|
||||||
|
result = removeUseStrict(result);
|
||||||
|
}
|
||||||
fs.writeFileSync(path.join(cwd, 'lodash.custom.min.js'), result);
|
fs.writeFileSync(path.join(cwd, 'lodash.custom.min.js'), result);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user