Структура репозитория - 2gis/mapsapi GitHub Wiki
-
/app— приложение для раздачи API: серверная часть, загрузчик карты, демо-страница -
/assets– статические ассеты. Содержимое папки копируется вdistбез изменений -
/functional-tests— функциональные тесты -
/gulp— конфигурация и код сборщика -
/src– исходный код API -
/test– конфигурационные файлы karma -
/vendors– сторонние библиотеки -
config.main.json– конфигурационный файл приложения -
gulpfile.js– сборщик приложения -
LICENSE.md– лицензия
В /src/DGPluginName/skin находится папка с темами:
-
/skin-
/basic— общие стили для всех тем -
/dark— папка с темой -
/light— ещё одна папка с темой
-
Структура каталога темы выглядит следующим образом (пример):
-
/less— содержит файлы стилей в формате *.less -
/img— содержит картинки (растровые и векторные) которые не нужно конвертировать -
skin.config.js— конфиг темы (json) с параметрами темы (картинки, размер и положение для маркеров, флаг и позиция для контролов)
Чтобы подключить скин, нужно передать его имя параметром при подключении loader.js, например:
<script src="http://maps.api.2gis.ru/2.0/loader.js?skin=dark"></script>Важно помнить о соглашениях в именовании картинок скинов, в название изображения добавляется имя скина, например:
DGGeoclicker_building-dark.svg
Структура папки модуля (пример) может быть такой:
-
DGGeoclicker/-
src/— исходный код -
test/— юнит-тесты -
demo/— демонстрация базовой функциональности плагина -
lang/— (oпциональная) если плагин поддерживает мультиязычность, в это папке будут лежать файлы словарей (lang/it.js,lang/ru.js) -
skin/— (oпциональная) если плагин привносит новые элементы ui, исходники добавляются сюда, структура папки /skin аналогична такой же папке ядра -
templates/— (oпциональная) здесь хранятся шаблоны (в формате *.tmpl) для отображения данных.
-
Включить плагин в сборку и описать его зависимости можно в файле build/deps.js. Например так:
DGFullScreen: {
desc: 'Full screen module',
src: [
'DGFullScreen/src/DGFullScreen.js',
'DGFullScreen/lang/ru.js',
'DGFullScreen/lang/it.js',
'DGFullScreen/lang/cs.js',
'DGFullScreen/lang/en.js'
],
styl: {
all: ['DGFullScreen/skin/{skin}/styl/DGFullScreen.less'],
ie: ['DGFullScreen/skin/{skin}/styl/DGFullScreen.ie.less']
},
deps: ['DGCore', 'DGLocale', 'DGRoundControl']
},Важно использовать переменную {skin} при подключении ресурсов, зависимых от тем, чтобы не потерять возможность подключать темы параметром из loader.js url.