我们正在同一个组织下开发几个NPM包:
@aerogearservices/core
@aerogearservices/core-rn
@aerogearservices/core-cordova
其中core-cordova
是Cordova插件,通过依赖项安装(了解有关scoped packages的更多信息)。
相关文件:
App&#39的package.json
{
...
"dependencies": {
"@aerogearservices/core-cordova": "1.0.0",
...
},
"cordova": {
"plugins": {},
"platforms": ["ios", "android"]
}
}
插件的package.json
{
"name": "@aerogearservices/core-cordova",
"version": "1.0.0",
...
"cordova": {
"id": "aerogearservices-core-cordova",
"platforms": [
"android"
]
},
"dependencies": {
"@aerogearservices/core": "1.0.0"
},
"engines": {
"cordovaDependencies": {
...
}
}
}
插件的plugin.xml
... ... Apache 2.0
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
...
</config-file>
<source-file
...
/>
</platform>
插件真的什么都没做,我只是想在我的应用程序中安装它,但是当我运行cordova platform add android
时,我收到了这个错误:
UnhandledPromiseRejectionWarning: CordovaError: Cannot find plugin.xml for plugin "@aerogearservices". Please try adding it again.
问题是Cordova会在myApp/plugins/aerogearservices/core-cordova
下安装该插件,以便它在错误的位置寻找plugin.xml
。
作用域包和cordova插件如何协同工作?在没有重命名插件的情况下,是否有解决方法?
答案 0 :(得分:2)
这可能不是解决您的问题的方法,但是我最终在创建在范围npm注册表中发布的cordova插件时遇到了问题,这就是我设法解决的方法:
插件的config.xml不应提及范围:
<plugin id="cordova-plugin-myplugin" ...>
<name>cordova-plugin-myplugin</name>
另一方面,插件的package.json应该提到它:
"name": "@scope/cordova-plugin-myplugin",
"cordova": {
"id": "@scope/cordova-plugin-myplugin",
"platforms": [
"android",
"windows",
"ios"
]
},
现在,我使用
cordova plugin add @scope/cordova-plugin-myplugin
没问题
我希望这可能对某人有所帮助