【问题标题】:cordova platform add: adding second platform removes node modules for existing plugins and platforms科尔多瓦平台添加:添加第二个平台删除现有插件和平台的节点模块
【发布时间】:2021-01-19 19:17:13
【问题描述】:

我基本上是在做以下事情:

cordova plugin add pluginA 
cordova plugin add pluginC
cordova plugin add pluginX
cordova platform add android

这会在添加完成后安装插件和节点模块中的cordova-android@8.1.0,以及pluginA、pluginB和pluginC。然后我做:-

cordova platform add ios@5

安装cordova-ios,但从node_modules 中删除cordova-android 模块和所有插件模块。不删除平台,只删除节点模块。

打开 npm 计时,我可以看到它运行以下 npm 命令,并且该 npm 命令删除了 cordova-android 和插件

1 verbose cli [
1 verbose cli   '/usr/local/bin/node',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'install',
1 verbose cli   'cordova-ios@5',
1 verbose cli   '--production',
1 verbose cli   '--save-exact'
1 verbose cli ]

根据我切入骨的真实项目,我已经设法通过基本项目设置重现了该问题:

mkdir issue && cd issue && {
  mkdir www
  echo '{}' > build.json
  cat >config.xml <<-EOF
    <?xml version='1.0' encoding='utf-8'?>
    <widget id="com.example.mobile.test" version="0.0.1" android-versionCode="1"
      xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"
      xmlns:android="http://schemas.android.com/apk/res/android">
    <name>Test Client</name>
    <description>Test Client</description>
    <author email="user@email.com" href="http://www.yourcompany.com">Your Company</author>
    <content src="index.html" />
    <engine name="ios" spec="5" />
  </widget>
  EOF

  cordova --verbose platform add --save android
  cordova --verbose platform add --save ios@5

  test ! -d node_modules/cordova-android \
    && echo "cordova-android has been removed"
}

~/.npm/_logs可以看到执行了以下npm命令:

/usr/local/bin/node /usr/local/bin/npm view cordova-custom-config --json
/usr/local/bin/node /usr/local/bin/npm install cordova-custom-config --production --save
/usr/local/bin/node /usr/local/bin/npm install cordova-android@^8.0.0 --production --save-exact
/usr/local/bin/node /usr/local/bin/npm install cordova-ios@5 --production --save-exact

并且从安装cordova-ios@5的npm日志可以看出npm决定卸载cordova-android

97 silly diffTrees remove cordova-android@8.1.0
98 silly diffTrees remove cordova-custom-config@5.1.0

NPM 版本信息:

2 info using npm@6.14.8
3 info using node@v14.15.1

另外,作为参考,使用这些命令启用 npm 日志记录:

npm config set timing true
npm config set logs-max 10000

【问题讨论】:

  • 在安装 npm 依赖项和 Cordova 平台和插件之前,您是否尝试过删除您的 node_modules 并移除您的 Cordova 平台?如果在安装 Cordova 插件之前和之后添加 Cordova 平台,它是否有效?
  • 我每次都是从一个空文件夹(只是 www、config.xml 和 build.json)开始。我已经在没有任何插件的情况下复制了这个。

标签: cordova npm cordova-ios cordova-android


【解决方案1】:

该行为是通过在 config.xml 中具有单个 &lt;engine/&gt; 节点来触发的。指定两个引擎,或根本不指定引擎,添加第二个平台时不会删除模块。

  <engine name="ios" spec="5" />
  <engine name="android" spec="8" />

以下config.xml 有效。

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.mobile.test" version="0.0.1" android-versionCode="1"
    xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android">
  <name>Test Client</name>
  <description>Test Client</description>
  <author email="user@email.com" href="http://www.yourcompany.com">Your Company</author>
  <content src="index.html" />
</widget>

为什么&lt;engine/&gt; 节点会影响npm 删除我不知道的那些模块。

以下脚本有效,插件和 Cordova 平台均完好无损。

mkdir issue && cd issue && {
  mkdir www
  echo "{}" >build.json

  cat >config.xml <<-EOF
    <?xml version='1.0' encoding='utf-8'?>
    <widget id="com.example.mobile.test" version="0.0.1" android-versionCode="1"
      xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"
      xmlns:android="http://schemas.android.com/apk/res/android">
      <name>Test Client</name>
      <description>Test Client</description>
      <author email="user@email.com" href="http://www.yourcompany.com">Your Company</author>
      <content src="index.html" />
    </widget>
  EOF

  cordova plugin add cordova-custom-config
  cordova platform add --save android
  cordova platform add --save ios@5
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多