Package.json vs config.xml для плагинов cordova
Каков правильный способ управления плагинами и платформами Кордовы?
В проекте, использующем [email protected]
и [email protected]
, я сталкиваюсь с двумя возможностями:
с Cordova (config.xml)
cordova create dummy-project && cd dummy-project
cordova platform add browser --save
cordova plugin add cordova-plugin-device --save
## If forgot to add `--save` option, manually update config.xml
#cordova platform save
#cordova plugin save
# reset platforms & plugins, like we just checked out the repository
rm -rf platforms plugins
# `cordova prepare` automatically setup platforms & plugins
# dependencies via config.xml
cordova prepare
Pros
- Платформы и плагины принадлежат к области Кордовы, поэтому кажется интуитивно понятным использование cordova
-
Платформы и версии плагинов сохраняются в config.xml
, как показано ниже:
<plugin name="cordova-plugin-device" spec="~1.0.1" />
<engine name="browser" spec="~4.0.0" />
-
Несколько разработчиков, которые проверяют репо, получат одинаковые зависимости
против
- Еще один файл конфигурации
config.xml
, который загромождает корневой каталог проекта
- Дубликат информации в
plugins/fetch.json
и platforms/platforms.json
?
- Необходимо явно добавить опцию
--save
с Ionic (package.json)
ionic start dummy-project blank && cd dummy-project
ionic platform add browser
ionic plugin add cordova-plugin-device
# reset platforms & plugins, like we just checked out the repository
rm -rf platforms plugins
# fetch platforms & plugins dependencies via package.json
ionic state restore
Pros
- Зависимости проектов, объединенные в
package.json
со следующими настраиваемыми ключами:
-
cordovaPlugins
-
cordovaPlatforms
- Автосохранение при добавлении платформы или плагина
Против
- Отсутствие версии для плагинов и платформ в package.json(это огромный блокиратор для меня)
- Почему бы не поместить плагины и платформы cordova в
dependencies
, так как они являются пакетами NPM?
ionic
может символизировать зависимости между node_modules
и {plugins,platforms}/
Являются ли разработчики ионной и кордовой об объединении/рефакторизации этого вопроса?
Ответы
Ответ 1
Изменить: второе обновление! 2017,05.
Это снова меняется - на этот раз на Кордове.
Кордова 7 добавляет поддержку package.json
!
Смотрите на блоге Кордовы: http://cordova.apache.org/news/2017/05/04/cordova-7.html
Изменить: обновить 2016.05.
Похоже, что многие команды ionic
были созданы из-за отсутствия функций в cordova
, но поскольку кордова догнала и реализовала много новых функций, ионные сопровождающие рассматривают возможность сброса их команды как ionic state
в пользу те, которые предоставлены кордовой.
Итак, похоже, что путь "кордовы" может быть более надежным в будущем.
Смотрите эти билеты:
Оригинальный ответ (2016.03.):
Это вопрос личного вкуса, который я бы сказал. Какое бы решение вы ни выбрали, лучше всего быть последовательным, а затем всегда использовать cordova plugin add ...
или ionic plugin add
, а не смешивать два.
FYI вы можете иметь пиннинг версии с ионным решением, но это правда, вы должны положить его вручную или вам нужно указать версию явно во время установки, например. ionic plugin add [email protected]
. Определенно, есть место для улучшения ионной CLI в отношении этого.
Например, это наш package.json
с прикрепленными версиями плагинов и версиями платформы, а также закрепленный github SHA1:
"cordovaPlugins": [
"[email protected]",
"[email protected]",
"[email protected]",
{
"locator": "https://github.com/Initsogar/cordova-webintent.git#3d12378de9f38be900761a0ad06ab697cf6d9add",
"id": "com.borismus.webintent"
},
{
"variables": {
"APP_ID": "123456789987654321",
"APP_NAME": "TEST"
},
"locator": "[email protected]",
"id": "[email protected]"
}
],
"cordovaPlatforms": [
"[email protected]"
]
Затем, когда вы выполняете ionic state restore
, он будет соблюдать перечисленные версии.
Ответ 2
я попытаюсь использовать ionic state save
и ionic state restore
для управления конфигурацией, включая плагины... Подробнее см. документацию