123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /**
- * Wrapper around amd-config-builder.
- * Can be used in cli and in grunt task.
- */
- var configBuilder = require('amd-config-builder'),
- path = require('path'),
- fs = require('fs');
- exports.writeConfig = function (searchDir, fileForConfig, callback) {
- searchDir = searchDir || path.join(__dirname, '../../..');
- fileForConfig = fileForConfig || 'config.js';
- callback = callback || function (err) { if (err) throw err; };
- function tryToFlattenPathsMapping(mapping) {
- if (Array.isArray(mapping)) {
- for (var i = 0; i < mapping.length; ++i) {
- var element = mapping[i];
- if (element.match(/(^|:)\/\//)) break;
- try {
- var stat = fs.statSync(path.join(searchDir, element + ".js"));
- if (stat.isDirectory()) break;
- if (stat.isFile()) return element;
- } catch (e) {}
- }
- }
- return mapping;
- }
- configBuilder.produceConfigObject(searchDir, function (err, result) {
- if (err) return callback(err);
- for (var p in result.paths) {
- result.paths[p] = tryToFlattenPathsMapping(result.paths[p]);
- }
- var text = "/* DO NOT EDIT! This file is generated. */\n" +
- "\n" +
- "var require;\n" +
- "if (!require) require = {config: function (x) {require = x;}};\n" +
- "require.config(" + JSON.stringify(result, null, 2) + ");";
- fs.writeFile(path.join(searchDir, fileForConfig), text, callback);
- });
- };
|