Реализовал функционал подмены адресов. Адрес модуля сверяется с таблицей и заменяется на другой.
Используя подмену можно в описании модуля ссылаться на глобальный адрес модуля, так как он более уникален, но в проекте использовать локальный источник.
небольшой пример
http://vflash.ru/work/zztest/
вот json корневого модуля примера
{
"modules":{"zzparser": "github:~/vflash/zzparser"},
"scripts": ["./test.js"]
}
в HTML подключаем его через scmod -
http://scmod.vflash.ru/sandbox?src=h...test/test.json
на страницу будут подключены три скрипта
1 - [url]http://scmod.vflash.ru/file/3/EasySAXParser/https/raw.github.com/vflash/easysax/master/easysax.js[/url]
2 - [url]http://scmod.vflash.ru/file/2/zzParser,EasySax/https/raw.github.com/vflash/zzparser/master/zzparser.js[/url]
3 - [url]http://scmod.vflash.ru/file/1/module,zzparser/http/vflash.ru/work/zztest/test.js[/url]
в данном случаи файлы двух модулей будут загружены из удаленного источника. Оба модуля расположены на github-е отчего загрузка файлов с него значительно медленнее чем могло быть с локального. Также нет возможности делать в них локальные правки.
используя подмену можно заменить глобальный адрес локальным.
для этого создал папку deps и туда клонировал два репозитория
git clone git://github.com/vflash/zzparser.git
git clone git://github.com/vflash/easysax.git
в этой же папке создал файл со списком подмен
http://vflash.ru/work/zztest/deps/replace.json
{
"replace": {
"github:~/vflash/easysax": "./easysax/easysax.json",
"github:~/vflash/zzparser": "./zzparser/zzparser.json"
}
}
теперь в HTML подключаем наш модуль с указанием списка подмен
http://scmod.vflash.ru/sandbox?rep=d...test/test.json
на страницу будут подключены три скрипта, но уже только с локального источника
1 - [url]http://scmod.vflash.ru/file/3/EasySAXParser/http/vflash.ru/work/zztest/deps/easysax/easysax.js[/url]
2 - [url]http://scmod.vflash.ru/file/2/zzParser,EasySax/http/vflash.ru/work/zztest/deps/zzparser/zzparser.js[/url]
3 - [url]http://scmod.vflash.ru/file/1/module,zzparser/http/vflash.ru/work/zztest/test.js[/url]
список подмен можно описать не только в отдельном файле но и в корневом модуле, свойство "replace".
дополнительно для scmod указываем rep=true -
http://scmod.vflash.ru/sandbox?rep=t...test/test.json
{
"modules":{"zzparser": "github:~/vflash/zzparser"},
"scripts": ["./test.js"],
"replace": {
"github:~/vflash/easysax": "./deps/easysax/easysax.json",
"github:~/vflash/zzparser": "./deps/zzparser/zzparser.json"
}
}