Видалення плагінів cordova з проекту


103

Якось у моєму додатку встановлено багато плагінів cordova, і тому він вимагає доступу до майже всього - від моїх контактів до поточного місця розташування (навіть якщо цьому додатку цього не потрібно).

Цей додаток створено за допомогою jenkins, і наскільки я розумію, одне рішення - видалити кожен плагін за допомогою однієї команди, так це буде так:

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

Але іноді це показує деякі помилки, і з jenkins будь-яка помилка закінчується помилкою збірки, тож чи є якась команда, яка видаляє всі плагіни? (під час встановлення основи плагінів, для яких потрібен будь-який додаток, автоматично додаються через cordova, тому я шукав їх, cordova plugin rm -allале не міг його знайти)


1
Y рекомендував би побудувати скрипт оболонки, який викликає список cordovaplugin, а потім виконує модуль pluova rm для кожного повернутого рядка
QuickFix

Я можу зробити щось подібне лише через makefile. А також мені не так добре з командним рядком Unix.
мммм

ви можете спробувати заповнити запит у проекті cordova, щоб попросити його додати команду для видалення всіх плагінів ...
QuickFix

так, добре, я не так багато часу чекати, поки вони додадуть нову команду тільки для мене ..
мммм

Відповіді:


246

Спочатку слід перерахувати свої плагіни:

cordova plugin list

З цим результатом ви можете просто зробити:

cordova plugin remove <PLUGIN_NAME>

Наприклад:

cordova plugin remove org.apache.cordova.media

Сподіваюся, це допомагає.


Чомусь мій проект VS2013 не містить жодного списку, а видалення не працює. Перейшов до старої моди config.xml для редагування та видалення папки плагінів ...
Ентоні Хорн

8
Хлопець попросив команду видалити всі за один раз. Це проста документально підтверджена відповідь на видалення лише одного.
Імон

8
краще зробити cordova plugin remove <PLUGIN_NAME> --saveтак, щоб він автоматично був видалений з config.xml
kamayd

19

Ви можете це зробити і з bash (після переходу в каталог проектів Cordova):

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

Ви тестували це?
Хамід Арагі

11

Ви можете використовувати: cordova plugins list | awk '{print $1}' | xargs cordova plugins rm

і використовуйте cordova plugins listдля перевірки, чи вилучені плагіни.


Не працювало. Отримайте таку помилку:Error: Plugin "{}" is not present in the project. See `cordova plugin list`
tfmontague

1
@tfmontague спробуйте це зробити вручну, cordova plugins lsа потім перевірте, чи можна видалити плагіни один за одним за допомогою cordova plugins rm plugin_name. Із помилки, схоже, що один із плагінів фізично не присутній у вашому проекті. За допомогою цього методу ви можете знайти цей плагін.
Хамід Таваколі

10

v2.0.0 cordova-check-плагінів дозволяє видалити всі плагіни проекту:

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

Він спробує використовувати CLI Cordova для видалення кожного плагіна, але якщо це не вдасться, він змусить видалити плагін з platforms/і plugins/.

Якщо ви також хочете видалити з config.xml, використовуйте:

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

Відмова від відповідальності: Я є автором кордова-контрольних плагінів


$ cordova-check-plugins --remove-all --save Видалення всіх плагінів ... -ФАТАЛЬНА ПОМИЛКА: Не вдалося знайти локальну / глобальну команду CLI або глобальної fonegap CLI при переліку встановлених плагінів - переконайтеся, що модуль cordova npm встановлений або локально у папці вашого проекту чи в усьому світі. Помилка: команда не вдалася: phonegap -v 'phonegap' не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма чи пакетний файл.
Нага

@Naga вам потрібно встановити cordova або phonegap у вашій глобальній директорії npm, яка вказана префіксом npm config змінною за замовчуванням або тим, що ви встановите у своїх .npmrc / npmrc файлах. Швидше за все, у вас є, C:\Users\yourusername\AppData\Roaming\npmякщо ви працюєте в Windows або /usr/localв ядрі UNIX. Щоб дізнатись, який ваш префікс, ввівши термінал / командуnpm config get prefix
NoodleOfDeath

9

З терміналу (osx) я зазвичай користуюся

cordova plugin -l | xargs cordova plugins rm

Труба, труба все!

Щоб трохи розширити: ця команда буде перебирати результати cordova plugin -lта подавати їхcordova plugins rm .

xargs - одна з тих команд, про яку ти дивуєшся, чому ти не знав про це раніше. Дивіться цю туту.


1
Оскільки з cordova 9.0.0 це більше не працює належним чином, JVE999 працює.
Бала Кларк

4

Я це роблю з цим пітоном однолінійним:

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

Очевидно, він не справляється з будь-якими умовами помилок, але це робить роботу.


Просто використовуйте скрипт оболонки. Введення ще однієї мови програмування із власними залежностями в суміш робить Кордову ще більшим безладом.
tfmontague

2

Наскільки я пам’ятаю з Кордови, у вас повинна бути файл xml у папці «res», що містить список плагінів, використаних у вашому проекті. Можливо, вам потрібно буде видалити ці невикористані плагіни зі списку. А також слід видалити пов'язані файли.


Я не маю фізичного доступу до цього раба. Не можна зробити так.
мммм

2
cordova platform rm android

cordova plugin rm cordova-plugin-firebase

cordova platform add android

1
Вперед і додайте у відповідь якийсь контекст чи пояснення.
Joey Phillips

1

Це командний рядок для видалення плагінів у Кордові

cordova plugin remove <pluginid>

Наприклад, я запустив cordova pluginі отримав список плагінів, тоді я використовував ідентифікатор для плагіна для видалення

cordova plugin remove com.monday.contact-chooser

Ви можете отримати допомогу в командному рядку, ввівши

cordova help <command>


модуль cordova видалити com.monday.contact-вибір, що дає помилку як - Помилка: Плагін "cordova-plugin-name" немає в проекті. Див cordova plugin list.
С.Ядав

Видаліть свою публікацію. Питання, яке задавали, було "чи є якась команда, яка видаляє всі плагіни".
tfmontague

1

Сценарії на основі обробки списку встановлених плагінів можуть не працювати, оскільки існують залежності між встановленими плагінами (e, g, cordova-plugin-file та cordova-plugin-file-transfer).

У прикладі сценарій спочатку знайде плагін файлу, потім спробує його видалити, і ми отримаємо помилку, оскільки цього вимагає передача файлів. Тому у нас буде


Це хороший момент щодо залежності між встановленими плагінами. Я думаю, що існує силовий прапор --force, який видалив би плагін незалежно від ...
tfmontague

0

Під час виконання команди: cordova plugin remove <PLUGIN NAME>переконайтеся, що ви не додаєте номер версії до імені плагіна. Просто звичайне ім'я плагіна, наприклад:

cordova plugin remove cordova.plugin_name 

і ні:

cordova plugin remove cordova.plugin_name 0.01 

або

cordova plugin remove "cordova.plugin_name 0.01"

Якщо виникла проблема з привілеями, запустіть із sudo, якщо ви перебуваєте в системі * nix, наприклад:

sudo cordova plugin remove cordova.plugin_name

Потім ви можете додати --save, щоб видалити його з файлу config.xml. Наприклад:

cordova plugin remove cordova.plugin_name --save

0
  • отримати доступ до папки
  • список плагінів (cordova plugin list)
  • iionic cordova плагін видалити "pluginName"

Має бути добре!


0

Якщо вищевказане рішення не спрацювало, і у вас виникло нездійснене відхилення обіцянки, спробуйте виконати наступні дії:

  1. Очистіть проект Кордова

    кордова чиста

    1. Видалити платформу

Кордова платформа видалити android / ios

  1. Потім вийміть плагін

видалити плагін cordova видалити

  1. додати платформи та запустити проект. Це працювало для мене.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.