description and source-codefunction nodeExternals(options) {
options = options || {};
var whitelist = [].concat(options.whitelist || []);
var binaryDirs = [].concat(options.binaryDirs || ['.bin']);
var importType = options.importType || 'commonjs';
var modulesDir = options.modulesDir || 'node_modules';
var modulesFromFile = !!options.modulesFromFile;
// helper function
function isNotBinary(x) {
return !contains(binaryDirs, x);
}
// create the node modules list
var nodeModules = modulesFromFile ? readFromPackageJson() : readDir(modulesDir).filter(isNotBinary);
// return an externals function
return function(context, request, callback) {
var moduleName = options.includeAbsolutePaths ? getModuleName(request) : request.split('/')[0];
if (contains(nodeModules, moduleName) && !containsPattern(whitelist, request)) {
// mark this module as external
// https://webpack.github.io/docs/configuration.html#externals
return callback(null, importType + " " + request);
};
callback();
}
}