2015-05-05 12 views
56

Abbiamo un progetto Angular + Ionic + Cordova con più sviluppatori per cui vorremmo gestire le dipendenze dei plugin per cordova. Stiamo utilizzando Cordova CLI 5+ e, quando eseguiamo manualmente i comandi di installazione (ad esempio cordova plugin add cordova-plugin-camera), una nuova riga viene aggiunta alla sezione cordovaPlugins del file package.json. Ecco ciò che il prodotto finito si presenta come:Gestisci i plug-in cordova con npm + package.json

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

Questo è tutto grande, tranne che non riusciamo a trovare un modo per dev # 2 di NPM installare questi plugin - invece, deve eseguire i comandi singolarmente, che poi aggiunge una riga duplicata a package.json, sporcare il repository. Siamo sicuri che ci deve essere un comando per installarli, ma non trovarli. Qualcuno può far luce?

+0

FWIW, per ora stiamo usando sorso-Cordova per leggere una versione modificata di quello sopra in da package.json. Pubblicherà la soluzione completa, se questa risulta essere la soluzione, una volta scaduto il periodo di taglia. –

+0

Non viene installato quando si esegue la creazione di cordova? –

+0

'cordova plugin add cordova- *' aggiunge una riga alla sezione 'cordovaPlugins' del file' package.json'. –

risposta

88

cosa ha causato il nostro problema

Inizialmente avevamo usato questo Ionic + Cordova + Grunt seed project per deporre le uova la nostra applicazione iniziale. Lo project includes un numero di Cordova hooks che, tra le altre cose, aggiunge e rimuove piattaforme e plug-in dalle sezioni cordovaPlatforms e cordovaPlugins in package.json quando si esegue il comando corrispondente (ad esempio cordova plugin add cordova-plugin-media aggiunge una riga a cordovaPlugins).

Per supportare meglio i test locali (provando nuove versioni di un plug-in, ad esempio) e per prevenire i problemi di dipendenza cross-dev, abbiamo disattivato il hook del seed project e ora abbiamo creato manualmente lo package.json come necessario.

correttamente Gestione Plugin Cordova

In risulta, il Ionic CLI utilizza package.json per gestire Cordova stato app in termini di piattaforme e plugin (come di version 1.3.19, sembra).

Compilazione package.json con due sezioni, cordovaPlatforms e cordovaPlugins ci ha permesso di fare un semplice ionic state restore per ottenere l'ambiente Cordova in forma per l'emulazione, edilizia, ecc

Specifica Versioni

Ad ulteriore blocco -Dopo lo stato della nostra applicazione e l'ambiente di sviluppo, abbiamo anche specificato la versione di destinazione delle piattaforme Cordova e dei plugin che stiamo usando aggiungendo il numero di versione. Ecco cosa abbiamo usare:

{ 
    ... 
    "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

volta che hai la precedenza nel vostro package.json, si può quindi garantire che il vostro ambiente locale è nello stato corretto tramite ionic state restore (v1.3.19 +) che masticherà attraverso package.json e installerà piattaforme e plug-in secondo necessità.

+0

Hai trovato un modo per installare i plug-in da questo 'stato' che ionic sta salvando? Se è così mi piacerebbe vederlo. – jaker

+12

'ionic restore state' sta funzionando per noi! –

+1

Potrebbe essere sensato aggiungere "ripristino stato ionico" alla risposta sopra, poiché questa è la risposta effettiva alla domanda. – SomeCallMeTim

11

È possibile aggiungere un comando postinstall. Guardate qui sotto

{ 
    "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" 
    } 
} 

Bonus: utilizzare npm run clean seguito da npm install se si vuole iniziare a pulire i.e reinstallare tutte le piattaforme

1

può essere che sia un po 'tardi nel gioco, ma questo è il mio postinstall sceneggiatura

"postinstall": "bower i && gulp && ionic state reset && ionic config build" 
  • installa le dipendenze Bower, per esempio ionico lib
  • ripristina Cordova plugin
  • ri-costruisce la configurazione che hai fatto tramite comando config ionica
Problemi correlati