Closed lomadurov closed 11 years ago
Проще всего использовать lmd info - $ lmd info build_name
, которая кроме всех выбранных файлов выдаст исчерпывающую информацию о всей сборке. В итоге получится что-то такое
Я хотел из кода получить список модулей. Т.е. есть мастер (app.js), который получает список всех модулей, дёргает с сервера разрешённый для авторизированного пользователя список модулей, и в соответствии с данным списком инициализирует только нужное.
Можно использовать require.match, он принимает в качестве параметра регулярку и возвращает "хэш" из имени модуля и его "тела".
var templates = require.match(/Template$/);
Можно выбрать все модули /.*/
или только нужные - дальше уже на ваше усмотрение.
Спасибо большое, это именно то что мне было нужно.
К сожалению match маленько не подошёл, так как он инициализирует все найденные модули. Написал небольшой плагин.
/**
* Get list of declared module
* @param {RegExp} regExp optional
* @returns {Array} [moduleName, moduleName, etc]
*/
(function (sb) {
sb.require.modulesList = function (regExp) {
var result = [];
if (!(regExp instanceof RegExp)) {
regExp = /.*/
}
for (var moduleName in sb.modules) {
if (!sb.modules.hasOwnProperty(moduleName)) continue;
if (regExp.test(moduleName)) {
result.push(moduleName);
}
}
return result;
};
}(sandbox));
Я только хотел предложить :)
Добавил возможность ограничения поиска по исключающему списку, опция exclude
пользовательского плагина:
/*global sandbox*/
(function (sb) {
"use strict";
var exclude = (sb.options.modulesList && sb.options.modulesList.exclude) ? sb.options.modulesList.exclude : [],
modules = sb.modules;
/**
* Get list of declared module
*
* @param {RegExp} [regExp] optional
* @returns {Array} [moduleName, moduleName, etc]
*/
sb.require.modulesList = function (regExp) {
var result = [], moduleName;
regExp = (regExp instanceof RegExp) ? regExp : /\S*/;
for (moduleName in modules) {
if (modules.hasOwnProperty(moduleName) && (exclude.indexOf(moduleName) < 0) && (regExp.test(moduleName))) {
result.push(moduleName);
}
}
return result;
};
}(sandbox));
"plugins": {
"modulesList": {
"path": "../lib/modulesList.js",
"options": {
"exclude": ["$", "_", "Backbone"]
}
}
}
Объявляю модули следующим образом:
Как можно получить список всех добавленных модулей?