versiones run phone developer descargar cordoba app cordova ionic-framework ionic cordova-plugins

run - descargar cordova phonegap



package.json vs config.xml para plugins de cordova (2)

¿Cuál es la forma correcta de administrar los complementos y plataformas de Cordova?

En un proyecto que utiliza [email protected] & [email protected] , tengo 2 posibilidades:

con 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

  • Las plataformas y complementos pertenecen al dominio Cordova , por lo que parece intuitivo usar cordova
  • Las plataformas y las versiones de los complementos se guardan en config.xml como a continuación:

    <plugin name="cordova-plugin-device" spec="~1.0.1" /> <engine name="browser" spec="~4.0.0" />

  • Múltiples desarrolladores que completen el repositorio obtendrán las mismas dependencias

Contras

  • Otro archivo de configuración config.xml que desordena el directorio raíz del proyecto
  • plugins/fetch.json duplicada en plugins/fetch.json y platforms/platforms.json ?
  • Debe agregarse explícitamente --save opción

con 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

  • Las dependencias del proyecto se consolidaron en package.json con las siguientes claves personalizadas:
    • cordovaPlugins
    • cordovaPlatforms
  • Comportamiento de autoguardado al agregar una plataforma o complemento

Contras

  • No hay ninguna versión para plugins ni plataformas en package.json (eso es un gran bloqueador para mí)
  • ¿Por qué no poner complementos y plataformas cordova en dependencies ya que son paquetes de NPM de todos modos? ionic podría enlazar simbólicamente las dependencias entre node_modules y {plugins,platforms}/

¿Los desarrolladores iónicos y de Córdoba están considerando una unificación / refactorización de este asunto?


Intentaría usar el ionic state save y el ionic state restore para administrar la configuración, incluidos los complementos ... Consulte la documentación para obtener más información.


Editar: ¡segunda actualización! 2017.05.

Cambia de nuevo, esta vez en el lado de Córdoba. Cordova 7 agrega soporte para package.json !

Ver en el blog de Cordova: http://cordova.apache.org/news/2017/05/04/cordova-7.html

Editar: actualización 2016.05.

Parece que muchos comandos ionic se crearon debido a la falta de características en cordova , pero como Córdova atrapó e implementó muchas características nuevas, los mantenedores iónicos están considerando abandonar su comando como ionic state a favor de los proporcionados por Córdoba.

Por lo tanto, parece que seguir el "camino de Córdoba" podría ser más a prueba de futuro.

Ver esas entradas:

Respuesta original (2016.03.):

Es una cuestión de gusto personal, diría yo. Independientemente de la solución a la que recurra, es mejor ser coherente y, a continuación, utilizar siempre el cordova plugin add ... o ionic plugin add y no mezclar los dos.

FYI usted puede tener una versión fijada con la solución de ionic, pero es cierto, tiene que colocarla manualmente, o tiene que especificar la versión explícitamente durante la instalación, por ejemplo, el ionic plugin add [email protected] . Definitivamente hay espacio para mejoras en el CLI iónico con respecto a eso.

Por ejemplo, este es nuestro package.json con versiones de plugin anotados y versiones de plataforma, y ​​también github SHA1 inmovilizado:

"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]" ]

Luego, cuando realice el ionic state restore , respetará las versiones enumeradas.