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 enplugins/fetch.json
yplatforms/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 entrenode_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.