Подтвердить что ты не робот

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}/

Являются ли разработчики ионной и кордовой об объединении/рефакторизации этого вопроса?

4b9b3361

Ответ 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 для управления конфигурацией, включая плагины... Подробнее см. документацию