run - Administra los complementos de cordova con npm+package.json
instalar cordova npm (3)
Tenemos un proyecto Angular + Ionic + Cordova con múltiples desarrolladores para los que nos gustaría administrar las dependencias del complemento cordova.
Estamos utilizando
Cordova CLI 5+
, y cuando ejecutamos manualmente los comandos de instalación (por ejemplo,
cordova plugin add cordova-plugin-camera
), se agrega una nueva línea a la sección
cordovaPlugins
del archivo
package.json
.
Así es como se ve el producto terminado:
"cordovaPlugins": [
"cordova-plugin-camera",
"cordova-plugin-console",
"cordova-plugin-contacts",
"cordova-plugin-device",
"cordova-plugin-dialogs",
"cordova-plugin-file",
"cordova-plugin-geolocation",
"cordova-plugin-media",
"cordova-plugin-media-capture",
"cordova-plugin-network-information",
"cordova-plugin-splashscreen",
"cordova-plugin-statusbar",
"cordova-plugin-vibration",
"com.ionic.keyboard"
]
Eso es genial, excepto que no podemos encontrar ninguna manera para que dev # 2 instale esos complementos. En su lugar, tiene que ejecutar los comandos individualmente, que luego agrega una línea duplicada a
package.json
, ensuciando el repositorio.
Estamos seguros de que debe haber un comando para instalarlos, pero no podemos encontrarlo.
¿Alguien puede arrojar algo de luz?
Puede agregar un comando postinstall. Mira abajo
{
"cordovaPlugins": [
"[email protected]",
],
"cordovaPlatforms": [
"[email protected]",
],
"scripts": {
"postinstall": "ionic state restore",
"clean": "ionic platform remove android; ionic platform remove ios; ionic platform remove browser; git checkout package.json"
}
}
Bonificación: use
npm run clean
seguido de
npm install
si desea comenzar clean, es decir, reinstalar todas las plataformas
puede que sea un poco tarde en el juego, pero este es mi script posterior a la instalación
"postinstall": "bower i && gulp && ionic state reset && ionic config build"
- instala las dependencias de bower, por ejemplo, lib iónica
- restaura los complementos de Cordova
- reconstruye la configuración que hizo a través del comando de configuración iónica
¿Qué causó nuestro problema?
Originalmente habíamos utilizado este
proyecto de semillas Ionic + Cordova + Grunt
para generar nuestra aplicación inicial.
El
proyecto incluye
varios
ganchos
de
Cordova
que, entre otras cosas, agregan y eliminan plataformas y complementos de las
cordovaPlatforms
correspondientes
cordovaPlatforms
y
cordovaPlugins
en
package.json
cuando ejecuta el comando correspondiente (es decir,
cordova plugin add cordova-plugin-media
agrega una línea a
cordovaPlugins
).
Para admitir mejor las pruebas locales (por ejemplo, probar nuevas versiones de un complemento) y evitar problemas de dependencia entre desarrolladores, deshabilitamos el enlace del proyecto semilla y ahora creamos a mano el
package.json
según sea necesario.
Administrar adecuadamente los complementos de Cordova
Resulta que, la
CLI de Ionic
usa
package.json
para administrar el estado de la aplicación Cordova en términos de plataformas y complementos (a partir de la
versión 1.3.19
, al parecer).
cordovaPlatforms
package.json
con dos secciones,
cordovaPlatforms
y
cordovaPlugins
nos ha permitido realizar una
ionic state restore
simple para obtener el entorno Cordova en forma para emulación, construcción, etc.
Especificar versiones
Para bloquear aún más el estado y el entorno de desarrollo de nuestra aplicación, también hemos especificado la versión de destino de las plataformas y complementos de Cordova que estamos utilizando agregando el número de versión. Esto es lo que usamos:
{
...
"cordovaPlatforms": [
"[email protected]",
"[email protected]"
],
"cordovaPlugins": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
]
}
tl; dr
Una vez que tenga lo anterior en su
package.json
, puede asegurarse de que su entorno local esté en el estado correcto a través de
ionic state restore
(v1.3.19 +) que examinará
package.json
e instalará plataformas y complementos según sea necesario.