Support generic ext. modules with browserify
This commit is contained in:
@@ -40,7 +40,8 @@
|
|||||||
"rbush": "1.3.5",
|
"rbush": "1.3.5",
|
||||||
"temp": "0.8.1",
|
"temp": "0.8.1",
|
||||||
"walk": "2.3.4",
|
"walk": "2.3.4",
|
||||||
"wrench": "1.5.8"
|
"wrench": "1.5.8",
|
||||||
|
"browserify": "9.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"clean-css": "2.2.16",
|
"clean-css": "2.2.16",
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ var path = require('path');
|
|||||||
|
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var fse = require('fs-extra');
|
var fse = require('fs-extra');
|
||||||
|
var browserify = require('browserify');
|
||||||
|
|
||||||
var pkg = require('../package.json');
|
var pkg = require('../package.json');
|
||||||
|
|
||||||
@@ -15,11 +16,22 @@ var buildDir = path.join(root, 'build', 'ol.ext');
|
|||||||
* @return {Array.<Object>} Array of objects representing external modules.
|
* @return {Array.<Object>} Array of objects representing external modules.
|
||||||
*/
|
*/
|
||||||
function getExternalModules() {
|
function getExternalModules() {
|
||||||
return pkg.ext.map(function(name) {
|
return pkg.ext.map(function(item) {
|
||||||
return {
|
if (typeof item === 'string') {
|
||||||
name: name,
|
return {
|
||||||
main: require.resolve(name)
|
name: item,
|
||||||
};
|
module: item,
|
||||||
|
main: require.resolve(item),
|
||||||
|
browserify: false
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
module: item.module,
|
||||||
|
name: item.name !== undefined ? item.name : item.module,
|
||||||
|
main: require.resolve(item.module),
|
||||||
|
browserify: item.browserify !== undefined ? item.browserify : false
|
||||||
|
};
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,12 +43,8 @@ function getExternalModules() {
|
|||||||
* wrapped module.
|
* wrapped module.
|
||||||
*/
|
*/
|
||||||
function wrapModule(mod, callback) {
|
function wrapModule(mod, callback) {
|
||||||
fs.readFile(mod.main, function(err, data) {
|
var wrap = function(code) {
|
||||||
if (err) {
|
return 'goog.provide(\'ol.ext.' + mod.name + '\');\n' +
|
||||||
callback(err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var wrapped = 'goog.provide(\'ol.ext.' + mod.name + '\');\n' +
|
|
||||||
'/** @typedef {function(*)} */\n' +
|
'/** @typedef {function(*)} */\n' +
|
||||||
'ol.ext.' + mod.name + ';\n' +
|
'ol.ext.' + mod.name + ';\n' +
|
||||||
'(function() {\n' +
|
'(function() {\n' +
|
||||||
@@ -50,11 +58,29 @@ function wrapModule(mod, callback) {
|
|||||||
'fileoverviewTags, missingProperties, nonStandardJsDocs, ' +
|
'fileoverviewTags, missingProperties, nonStandardJsDocs, ' +
|
||||||
'strictModuleDepCheck, suspiciousCode, undefinedNames, ' +
|
'strictModuleDepCheck, suspiciousCode, undefinedNames, ' +
|
||||||
'undefinedVars, unknownDefines, uselessCode, visibility}\n' +
|
'undefinedVars, unknownDefines, uselessCode, visibility}\n' +
|
||||||
' */\n' + data.toString() + '\n' +
|
' */\n' + code + '\n' +
|
||||||
'ol.ext.' + mod.name + ' = module.exports;\n' +
|
'ol.ext.' + mod.name + ' = module.exports;\n' +
|
||||||
'})();\n';
|
'})();\n';
|
||||||
callback(null, wrapped);
|
};
|
||||||
});
|
|
||||||
|
if (mod.browserify) {
|
||||||
|
var b = browserify(mod.main, {standalone: mod.name}).
|
||||||
|
bundle(function(err, buf) {
|
||||||
|
if (err) {
|
||||||
|
callback(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
callback(null, wrap(buf.toString()));
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
fs.readFile(mod.main, function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
callback(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
callback(null, wrap(data.toString()));
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user