从项目中删除科尔多瓦插件

Posted

技术标签:

【中文标题】从项目中删除科尔多瓦插件【英文标题】:Removing cordova plugins from the project 【发布时间】:2014-03-22 20:51:14 【问题描述】:

在我的应用程序中不知何故安装了许多 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但找不到它)

【问题讨论】:

Y 建议构建一个调用 cordovaplugin list 的 shell 脚本,然后为返回的每一行执行 cordova plugin rm 我只能通过makefile来做类似的事情。而且我对unix命令行也不是很好。 您可以尝试在cordova项目中填写一个请求,要求他们添加删除所有插件的命令... 是的,我没有太多时间等他们为我添加新命令.. 【参考方案1】:

首先,您应该列出您的插件:

cordova plugin list

有了这个结果,你可以简单地做:

cordova plugin remove <PLUGIN_NAME>

例如:

cordova plugin remove org.apache.cordova.media

希望对你有帮助。

【讨论】:

由于某种原因,我的 VS2013 项目没有列出任何内容,并且删除不起作用。转到老式 config.xml 编辑和插件文件夹删除... 这家伙要求命令一次删除所有内容。这是一个简单的文档化答案,一次只删除一个。 最好是cordova plugin remove &lt;PLUGIN_NAME&gt; --save,这样它就会自动从 config.xml 中删除【参考方案2】:

你也可以用 bash 来做(在切换到你的 Cordova 项目目录之后):

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

【讨论】:

你测试了吗?【参考方案3】:

从我通常使用的终端(osx)

cordova plugin -l | xargs cordova plugins rm

管道,管道一切!

稍微扩展一下:此命令将遍历cordova plugin -l 的结果并将其提供给cordova plugins rm

xargs 是您想知道为什么以前不知道的命令之一。 See this tut.

【讨论】:

从科尔多瓦 9.0.0 开始,这不再正常工作,JVE999 的工作正常。【参考方案4】:

您可以使用: 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 尝试手动执行cordova plugins ls,然后看看是否可以使用cordova plugins rm plugin_name 逐个删除插件。从错误来看,您的项目中似乎没有实际存在其中一个插件。使用这个方法你可以找到那个插件。【参考方案5】:

cordova-check-plugins 的 v2.0.0 允许您删除项目中的所有插件:

$ 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 正在删除所有插件... -致命错误:列出已安装插件时找不到本地/全局cordova或全局phonegap CLI命令-确保您在项目文件夹中本地或全局安装了 cordova npm 模块。错误:命令失败:phonegap -v 'phonegap' 不是内部或外部命令、可运行程序或批处理文件。 @Naga 您需要在全局 npm 目录中安装 cordova 或 phonegap,该目录由默认前缀 npm 配置变量或您在 .npmrc/npmrc 文件中设置的任何内容指定。如果您在 Windows 上运行,您最有可能在 C:\Users\yourusername\AppData\Roaming\npm 中,或者在 UNIX 内核上运行在 /usr/local 中。您可以通过输入终端/命令npm config get prefix 找出您的前缀是什么【参考方案6】:

我用这个 python one-liner 来做:

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

显然它不处理任何类型的错误情况,但它完成了工作。

【讨论】:

只用一个shell脚本。将另一种具有自身依赖关系的编程语言混入其中会使 Cordova 变得更加混乱。【参考方案7】:
cordova platform rm android

cordova plugin rm cordova-plugin-firebase

cordova platform add android

【讨论】:

继续为您的答案添加一些上下文或解释。【参考方案8】:

据我所记得的 Cordova,您应该在“res”文件夹中有一个 xml 文件,其中包含项目中使用的插件列表。您可能需要从列表中删除那些未使用的插件。你也应该删除相关文件。

【讨论】:

我没有对该从站的物理访问权限。不能这样做。【参考方案9】:

这是在 Cordova 中删除插件的命令行

cordova plugin remove &lt;pluginid&gt;

例如,我运行 cordova plugin 并获得了插件列表,然后我使用插件的 id 来卸载

cordova plugin remove com.monday.contact-chooser

您可以通过键入在命令行中获得帮助

cordova help &lt;command&gt;

【讨论】:

cordova 插件删除 com.monday.contact-chooser 给出错误为 - 错误:项目中不存在插件“cordova-plugin-name”。见cordova plugin list 请删除您的帖子,被问到的问题是“是否有任何命令可以删除所有插件”。【参考方案10】:

基于处理已安装插件列表的脚本可能无法工作,因为已安装插件之间存在依赖关系(例如,cordova-plugin-file 和 cordova-plugin-file-transfer)。

在这个例子中,脚本会首先找到文件插件,然后它会尝试删除它,我们会得到一个错误,因为文件传输需要它。因此,我们将有

【讨论】:

这是一个关于已安装插件之间依赖关系的好点。我认为有一个强制标志--force,无论如何都会删除插件...【参考方案11】:

运行命令:cordova plugin remove &lt;PLUGIN NAME&gt;时,请确保不要在插件名称中添加版本号。只是简单的插件名称,例如:

cordova plugin remove cordova.plugin_name 

而不是:

cordova plugin remove cordova.plugin_name 0.01 

cordova plugin remove "cordova.plugin_name 0.01"

如果存在权限问题,如果您在 *nix 系统上,请使用 sudo 运行,例如:

sudo cordova plugin remove cordova.plugin_name

然后您可以添加 --save 以将其从 config.xml 文件中删除。例如:

cordova plugin remove cordova.plugin_name --save

【讨论】:

【参考方案12】: 访问文件夹 列出插件(cordova 插件列表) ionic cordova 插件删除“pluginName”

应该没问题!

【讨论】:

【参考方案13】:

如果上述解决方案不起作用并且您收到任何未处理的承诺拒绝,请尝试按照以下步骤操作:

    清理 Cordova 项目

    科尔多瓦干净

      移除平台

cordova 平台移除 android/ios

    然后删除插件

cordova 插件移除

    添加平台并运行项目 它对我有用。

【讨论】:

【参考方案14】:

这有点相关,可能对其他人有所帮助,我的一些插件版本已损坏,因此我能够删除插件文件夹的全部内容。请注意,所有对插件的引用仍在 package.json 和 config.xml 文件中。因此,当我删除并添加 Android 平台时,它重新安装了未损坏的插件版本并解决了我的问题。

【讨论】:

【参考方案15】:

我可能迟到了,不过有办法……

首先,很遗憾没有cordova plugin rm all,但我们可以解决它。

只需删除plugins 目录,然后重新添加您需要的所有插件。但请注意,这不是“官方”方式,但它适用于 Android 和 iOS。我刚刚对其进行了测试,因为我需要针对特定​​平台的类似脚本。

如果您觉得有帮助,请尽可能考虑置顶此回复。

问候 ;)

【讨论】:

以上是关于从项目中删除科尔多瓦插件的主要内容,如果未能解决你的问题,请参考以下文章

科尔多瓦中的admob插件错误

科尔多瓦项目中 navigator.geolocation 失败的问题

openSettings 插件科尔多瓦

Cordova Facebook 登录插件

科尔多瓦:找不到 plugin.xml

如何正确地包含一个科尔多瓦插件的外部 jar 文件?