Удаление плагинов 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 plugin rm -allно не смог их найти)

мммм
источник
1
Y рекомендовал бы создать сценарий оболочки, который вызывает список cordovaplugin, а затем выполняет команду cordova plugin rm для каждой возвращаемой строки
QuickFix
Я могу сделать что-то подобное только через make-файл. А также я не очень хорошо разбираюсь в командной строке unix.
мммм
вы можете попробовать заполнить запрос в проекте cordova, чтобы попросить их добавить команду для удаления всех плагинов ...
QuickFix
да, ну, у меня не так много времени, чтобы ждать, пока они добавят новую команду только для меня ..
мммм

Ответы:

246

Во-первых, вы должны указать свои плагины:

cordova plugin list

С этим результатом вы можете просто сделать:

cordova plugin remove <PLUGIN_NAME>

Например:

cordova plugin remove org.apache.cordova.media

Надеюсь, поможет.

Ruhanbidart
источник
По какой-то причине мой проект VS2013 не перечисляет их и удалить не работает. Ушел к старомодному редактированию config.xml и удалению папок плагинов ...
Энтони Хорн,
8
Парень попросил команду на удаление всех за раз. Это простой задокументированный ответ, позволяющий удалять только по одному.
Imon
8
лучше сделать cordova plugin remove <PLUGIN_NAME> --saveтак, чтобы он автоматически удалялся из config.xml
камайд 02
19

Вы также можете сделать это с помощью bash (после переключения в каталог проекта Cordova):

for i in `cordova plugin ls | grep '^[^ ]*' -o`; do cordova plugin rm $i; done
JVE999
источник
Вы это тестировали?
Хамид Араги,
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

Версия 2.0.0 cordova-check-plugins позволяет удалить все плагины в проекте:

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

Он попытается использовать Cordova CLI для удаления каждого плагина, но если это не удастся, произойдет принудительное удаление плагина из platforms/и plugins/.

Если вы также хотите удалить из config.xml, используйте:

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

Отказ от ответственности: я являюсь автором плагинов cordova-check-plugins

Дэйв Олден
источник
$ cordova-check-plugins --remove-all --save Удаление всех плагинов ... -FATAL ERROR: Не удалось найти локальную / глобальную Cordova или глобальную команду CLI phonegap при перечислении установленных плагинов - убедитесь, что у вас установлен модуль Npm Cordova локально в папке вашего проекта или глобально. Ошибка: сбой команды: phonegap -v 'phonegap' не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
Naga
@Naga, вам нужно установить cordova или phonegap в вашем глобальном каталоге npm, который определяется переменной конфигурации npm prefix по умолчанию или тем, что вы установили в ваших файлах .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:

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», содержащий список плагинов, используемых в вашем проекте. Вероятно, вам нужно удалить эти неиспользуемые плагины из списка. А также вы должны удалить связанные файлы.

Osayilgan
источник
У меня нет физического доступа к этому рабу. Так сделать нельзя.
мммм
2
cordova platform rm android

cordova plugin rm cordova-plugin-firebase

cordova platform add android
user9972736
источник
1
Продолжайте и добавьте контекст или пояснение к своему ответу.
Джои Филлипс
1

Это командная строка для удаления плагинов в Кордове.

cordova plugin remove <pluginid>

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

cordova plugin remove com.monday.contact-chooser

Вы можете получить справку в командной строке, набрав

cordova help <command>

Джек Шульц
источник
Плагин cordova удалить com.monday.contact-chooser выдает ошибку как - Ошибка: плагин "cordova-plugin-name" отсутствует в проекте. Смотрите cordova plugin list.
S.Yadav 03
Удалите, пожалуйста, свой пост. Был задан вопрос: «Есть ли команда, которая удаляет все плагины».
tfmontague
1

Скрипты, основанные на обработке списка установленных плагинов, могут не работать, так как между установленными плагинами существуют зависимости (например, 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)
  • плагин ionic cordova удалить "pluginName"

Все должно быть в порядке!

Меккуш
источник
0

Если вышеуказанное решение не сработало и вы получили необработанное отклонение обещания, попробуйте выполнить следующие действия:

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

    Кордова чистая

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

платформа Cordova удалить Android / iOS

  1. Затем удалите плагин

Кордова плагин удалить

  1. добавить платформы и запустить проект У меня это сработало.
rahul.sapkal23
источник