如何将NPM范围的软件包用于Cordova插件

jos*_*las 7 npm cordova cordova-plugins

我们正在同一组织下开发几个NPM软件包:

@aerogearservices/core
@aerogearservices/core-rn
@aerogearservices/core-cordova
Run Code Online (Sandbox Code Playgroud)

core-cordova通过依赖关系安装的Cordova插件在哪里(有关范围包的更多信息,请阅读)。

相关文件:

应用程序的package.json

{
  ...
  "dependencies": {
    "@aerogearservices/core-cordova": "1.0.0",
    ...
  },
  "cordova": {
    "plugins": {},
    "platforms": ["ios", "android"]
  }
}
Run Code Online (Sandbox Code Playgroud)

插件的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": {
      ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

插件的plugin.xml

... ... Apache 2.0

<platform name="android">
    <config-file target="res/xml/config.xml" parent="/*"> 
        ...
    </config-file>

    <source-file 
        ...
    />
</platform>
Run Code Online (Sandbox Code Playgroud)

该插件还没有执行任何操作,我只是尝试将其安装在我的应用程序中,但是在运行时出现cordova platform add android此错误:

UnhandledPromiseRejectionWarning: CordovaError: Cannot find plugin.xml for plugin "@aerogearservices". Please try adding it again.
Run Code Online (Sandbox Code Playgroud)

问题在于,Cordova将插件安装在下面,myApp/plugins/aerogearservices/core-cordova因此它正在寻找plugin.xml错误的位置。

在此处输入图片说明

作用域包和cordova插件如何一起工作?是否有任何解决方法而不重命名插件

小智 5

这可能不是您问题的解决方案,但我最终在创建一个发布在作用域 npm 注册表中的cordova 插件时遇到了问题,这就是我设法修复它的方法:

插件的 config.xml 不应提及范围:

<plugin id="cordova-plugin-myplugin" ...>
<name>cordova-plugin-myplugin</name>
Run Code Online (Sandbox Code Playgroud)

另一方面,插件的 package.json 应该提到它:

"name": "@scope/cordova-plugin-myplugin",
"cordova": {
    "id": "@scope/cordova-plugin-myplugin",
    "platforms": [
        "android",
        "windows",
        "ios"
        ]
    },
Run Code Online (Sandbox Code Playgroud)

现在,我使用没有问题

科尔多瓦插件添加@scope/cordova-plugin-myplugin

我希望这实际上可以帮助某人