Usuwanie wtyczek Cordova z projektu


103

W jakiś sposób w mojej aplikacji jest zainstalowanych wiele wtyczek Cordova i dlatego wymaga dostępu do prawie wszystkiego - od moich kontaktów po bieżącą lokalizację (nawet jeśli ta aplikacja tego nie potrzebuje).

Ta aplikacja jest zbudowana przez jenkins i, o ile rozumiem, jednym rozwiązaniem jest usunięcie każdej wtyczki za pomocą jednego polecenia, więc będzie wyglądać następująco:

cordova plugin rm org.apache.cordova.battery-status
cordova plugin rm org.apache.cordova.camera
cordova plugin rm org.apache.cordova.contacts
cordova plugin rm org.apache.cordova.geolocation
cordova plugin rm org.apache.cordova.media
cordova plugin rm org.apache.cordova.media-capture
cordova plugin rm org.apache.cordova.splashscreen
cordova plugin rm org.apache.cordova.vibration

Ale czasami pokazuje pewne błędy, aw przypadku Jenkinsa każdy błąd kończy się niepowodzeniem kompilacji, więc czy jest jakieś polecenie, które usuwa wszystkie wtyczki? (podczas instalacji podstawowe wtyczki, które wymagają do działania dowolnej aplikacji, są dodawane automatycznie przez cordova, więc szukałem ich, cordova plugin rm -allale nie mogłem ich znaleźć)


1
Y będzie recomment budowania skrypt powłoki, który wywołuje cordovaplugin listę, a następnie robi Cordova wtyczki rm na każdy wiersz zwrócony
QuickFix

Mogę zrobić coś takiego tylko poprzez makefile. Nie radzę sobie też dobrze z linią poleceń unixa.
mmmm,

możesz spróbować wypełnić żądanie w projekcie cordova, prosząc ich o dodanie polecenia usunięcia wszystkich wtyczek ...
QuickFix

tak, cóż, nie mam zbyt wiele czasu, aby czekać, aż dodadzą nowe polecenie tylko dla mnie ..
mmmm

Odpowiedzi:


246

Najpierw powinieneś wymienić swoje wtyczki:

cordova plugin list

Dzięki temu wynikowi możesz po prostu:

cordova plugin remove <PLUGIN_NAME>

Na przykład:

cordova plugin remove org.apache.cordova.media

Mam nadzieję, że to pomoże.


Z jakiegoś powodu mój projekt VS2013 nie wymienia żadnych i usuwanie nie działa. Przeszedłem do starej edycji config.xml i usunięto folder wtyczek ...
Anthony Horne

8
Facet poprosił o polecenie usunięcia wszystkich naraz. To jest prosta udokumentowana odpowiedź, aby usunąć tylko jedną na raz.
Imon

8
lepiej to zrobić cordova plugin remove <PLUGIN_NAME> --save, aby został automatycznie usunięty z config.xml
kamayd

19

Możesz to również zrobić za pomocą basha (po przejściu do katalogu projektu Cordova):

for i in `cordova plugin ls | grep '^[^ ]*' -o`; do cordova plugin rm $i; done

Czy to przetestowałeś?
Hamid Araghi

11

Możesz użyć: cordova plugins list | awk '{print $1}' | xargs cordova plugins rm

i użyj, cordova plugins listaby sprawdzić, czy wszystkie wtyczki zostały usunięte.


Nie udało się. Uzyskaj następujący błąd:Error: Plugin "{}" is not present in the project. See `cordova plugin list`
tfmontague

1
@tfmontague spróbuj ręcznie, cordova plugins lsa następnie sprawdź, czy możesz usunąć wtyczki pojedynczo, używając cordova plugins rm plugin_name. Po błędzie wygląda na to, że jedna z wtyczek nie jest fizycznie obecna w twoim projekcie. Korzystając z tej metody, możesz znaleźć tę wtyczkę.
Hamid Tavakoli

10

Wersja 2.0.0 cordova-check-plugins umożliwia usunięcie wszystkich wtyczek w projekcie:

$ npm install -g cordova-check-plugins
$ cordova-check-plugins --remove-all

Spróbuje użyć Cordova CLI do usunięcia każdej wtyczki, ale jeśli to się nie powiedzie, wymusi usunięcie wtyczki z platforms/i plugins/.

Jeśli chcesz również usunąć z config.xml, użyj:

$ cordova-check-plugins --remove-all --save

Uwaga: jestem autorem wtyczek cordova-check


$ cordova-check-plugins --remove-all --save Usuwanie wszystkich wtyczek ... -KATALNY BŁĄD: Nie można znaleźć lokalnego / globalnego polecenia CLI cordova lub globalnego phonegap podczas wyświetlania listy zainstalowanych wtyczek - upewnij się, że masz zainstalowany moduł cordova npm albo lokalnie w folderze projektu lub globalnie. Błąd: polecenie nie powiodło się: phonegap -v „phonegap” nie jest rozpoznawane jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy.
Naga

@Naga musisz zainstalować cordova lub phonegap w swoim globalnym katalogu npm, który jest określony przez domyślną zmienną konfiguracyjną npm prefiks lub cokolwiek ustawisz w plikach .npmrc / npmrc. Najprawdopodobniej twój jest dostępny, C:\Users\yourusername\AppData\Roaming\npmjeśli pracujesz w systemie Windows lub /usr/localjądrze UNIX. Możesz dowiedzieć się, jaki jest twój prefiks, wpisując terminal / commandnpm config get prefix
NoodleOfDeath

9

Z terminala (osx) zwykle używam

cordova plugin -l | xargs cordova plugins rm

Rura, fajka wszystko!

Aby nieco rozwinąć: to polecenie przejdzie w pętlę przez wyniki cordova plugin -li przekaże je do cordova plugins rm.

xargs to jedno z tych poleceń, o których zastanawiasz się, dlaczego wcześniej nie wiedziałeś. Zobacz ten tut.


1
Od wersji cordova 9.0.0 nie działa to już poprawnie, JVE999 działa.
Bala Clark

4

Robię to za pomocą tego jednowierszowego pythona:

python -c "import subprocess as sp;[sp.call('cordova plugin rm ' + p.split()[0], shell=True) for p in sp.check_output('cordova plugin', shell=True).split('\n') if p]"

Oczywiście nie obsługuje żadnych warunków błędów, ale wykonuje swoje zadanie.


Po prostu użyj skryptu powłoki. Wrzucenie kolejnego języka programowania z własnymi zależnościami do miksu sprawia, że ​​Cordova jest jeszcze większym bałaganem.
tfmontague

2

O ile pamiętam z Cordova, powinieneś mieć plik xml w folderze "res" zawierającym listę wtyczek użytych w twoim projekcie. Prawdopodobnie musisz usunąć te nieużywane wtyczki z listy. Powinieneś także usunąć powiązane pliki.


Nie mam fizycznego dostępu do tego niewolnika. Nie można tego zrobić w ten sposób.
mmmm,

2
cordova platform rm android

cordova plugin rm cordova-plugin-firebase

cordova platform add android

1
Śmiało i dodaj kontekst lub wyjaśnienie do swojej odpowiedzi.
Joey Phillips

1

To jest wiersz poleceń do usuwania wtyczek w Cordovie

cordova plugin remove <pluginid>

Na przykład uruchomiłem cordova plugini otrzymałem listę wtyczek, a następnie użyłem identyfikatora wtyczki do odinstalowania

cordova plugin remove com.monday.contact-chooser

Możesz uzyskać pomoc w wierszu poleceń, wpisując

cordova help <command>


cordova plugin remove com.monday.contact-chooser podając błąd jako - Błąd: Wtyczka "cordova-plugin-name" nie jest obecna w projekcie. Zobacz cordova plugin list.
S.Yadav

Usuń swój post, zadane pytanie brzmiało: „czy istnieje polecenie, które usuwa wszystkie wtyczki”.
tfmontague

1

Skrypty oparte na przetwarzaniu listy zainstalowanych wtyczek mogą nie działać, ponieważ istnieją zależności między zainstalowanymi wtyczkami (np. Cordova-plugin-file i cordova-plugin-file-transfer).

W tym przykładzie skrypt najpierw znajdzie wtyczkę pliku, a następnie spróbuje ją usunąć, a my otrzymamy błąd, ponieważ transfer plików tego wymaga. Dlatego będziemy mieć


To dobry punkt na temat zależności między zainstalowanymi wtyczkami. Myślę, że jest flaga siły --force, która usunęłaby wtyczkę
mimo wszystko

0

Podczas uruchamiania polecenia: cordova plugin remove <PLUGIN NAME>upewnij się, że nie dodajesz numeru wersji do nazwy wtyczki. Po prostu nazwa wtyczki, na przykład:

cordova plugin remove cordova.plugin_name 

i nie:

cordova plugin remove cordova.plugin_name 0.01 

lub

cordova plugin remove "cordova.plugin_name 0.01"

W przypadku problemu z uprawnieniami, uruchom sudo, jeśli jesteś w systemie * nix, na przykład:

sudo cordova plugin remove cordova.plugin_name

Następnie możesz dodać --save, aby usunąć go z pliku config.xml. Na przykład:

cordova plugin remove cordova.plugin_name --save

0
  • uzyskać dostęp do folderu
  • lista wtyczek (lista wtyczek cordova)
  • ionic cordova plugin usuwa „pluginName”

Powinno być dobrze!


0

Jeśli powyższe rozwiązanie nie zadziałało i otrzymałeś nieobsłużone odrzucenie obietnicy, spróbuj wykonać następujące czynności:

  1. Wyczyść projekt Cordova

    cordova clean

    1. Usuń platformę

Platforma cordova usuwa androida / ios

  1. Następnie usuń wtyczkę

Usuń wtyczkę cordova

  1. dodaj platformy i uruchom projekt. U mnie zadziałało.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.