我有一系列未在npm注册表中发布的插件,由于各种原因,它们永远不会出现。这些存在于GitHub存储库中。
鉴于cordova 8(实际上是从7.1.0开始)已经删除了nofetch
我们如何在config.xml
(或package.json
)中指定在用户执行时安装这些插件的cordova插件cordova prepare
?
实施例: 这是在package.json(以及config.xml)
<plugin name="org.devgeeks.Canvas2ImagePlugin" spec="https://github.com/devgeeks/Canvas2ImagePlugin.git">
执行cordova prepare
Discovered plugin "org.devgeeks.Canvas2ImagePlugin" in config.xml. Adding it to the project
Failed to restore plugin "org.devgeeks.Canvas2ImagePlugin" from config.xml. You might need to try adding it again. Error: Failed to fetch plugin https://github.com/devgeeks/Canvas2ImagePlugin via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Failed to get absolute path to installed module
然而手动做同样的事情就可以了:
cordova plugin add https://github.com/devgeeks/Canvas2ImagePlugin.git
Installing "org.devgeeks.Canvas2ImagePlugin" for android
Installing "org.devgeeks.Canvas2ImagePlugin" for ios
Adding org.devgeeks.Canvas2ImagePlugin to package.json
Saved plugin info for "org.devgeeks.Canvas2ImagePlugin" to config.xml
此特定插件没有npm注册表。对于没有npm注册表的任何其他插件也是如此。
答案 0 :(得分:4)
(并没有将此标记为答案,因为我做了与我想做的相反的事情)
我放弃了尝试这样做。使用不同的ID将更改发布到npm注册表要简单得多。我个人认为这是一个糟糕的机制 - 我认为npm注册表是一个很好的插件列表&#39;并且真的不应该被那些没有增加全局价值的修改所困扰,但我找不到任何选择。
所以我:
[(MyParentController *)parentVC myParentMethod];
originalplugin-myid-fork
和package.json
更改为仅引用这些ID,因为它们现在位于npm注册表中(我希望它们都同步)Backstory (对于上下文和我尝试的内容):
我的标准是让我的用户只需通过config.xml
npm install && bower install && cordova prepare
会在npm install
内创建插件填充程序,它与原始插件具有相同的ID。 node_modules
和config.xml
有package.json
,无论出于何种原因,spec="my fork url"
都会在npm注册表中寻找该ID并开始抱怨。 cordova prepare
之后,npm install
的手动安装会因同样的错误而失败。使此手动命令再次起作用的唯一方法是从cordova plugin add https://mygit.git
中删除该插件的定义。 node_modules
选项 - 永远无法让它工作 - 一直抱怨错过本地路径。答案 1 :(得分:0)
我遇到了同样的问题。曾经有一个选项--nofetch来安装没有package.json / npm的插件。似乎该选项已在cordova@8.0.0中删除,而没有替换。
建议here的解决方案是降级到cordova@7.1.0