Cordova 7 - config.xml或package.json?

时间:2017-09-06 16:55:24

标签: cordova package.json

我已经在Cordova上成功创建并发布了一个应用程序 - 所以我对这个平台并不陌生,但它并没有没有打嗝和挫折。

使用Cordova 7,我们现在有config.xml和package.json,主要包含相同的信息。

如果我想更改,请说版本号或标题,我编辑哪一个,如何相应地更新其他文件?

我尝试的任何东西似乎都没有用,而且必须两次进行更改似乎相当多余?

3 个答案:

答案 0 :(得分:11)

根据我在Cordova 7 Release Notes上可以阅读的内容,package.json将始终在config.xml运行cordova prepare时创建package.json,如果它不存在的话。如果确实存在config.xml,则会优先考虑(但仅限于其中定义的内容,如插件和平台,其他配置选项config.xml仍将使用)。

因此,在package.json中保存设置可能是一种解决方案,并且在运行cordova prepare之前始终删除phpcs --standard='Symfony' -a 'path' --report-file='~/Users/uname/Desktop/PHPcs' ,可能使用自定义npm脚本。

答案 1 :(得分:4)

作为对该问题的改进,Cordova 9.0.0似乎决定立即停止同步config.xml和package.json文件。因此,package.json是平台/插件信息的主要位置,对于具有Cordova经验的人来说,这似乎很奇怪。

我没有看到任何明显的宣布,但是在使用9.0.0时偶然发现了它,并在下面进行了确认:

  

更改包括:GH-750将保存平台/插件删除到config.xml

答案 2 :(得分:0)

对于版本号,您可以将其存储在package.json中,并添加一个名为"version"的npm脚本,该脚本将相应地更新config.xml。然后,始终使用npm version而不是手动更改版本号。

来自blog of masimplo

package.json

  "scripts": {
    ...
    "version": "./bin/update-config-version.sh",
    ...
  },

update-config-version.sh

#!/bin/bash

CONFIG='config.xml'
NEW_VERSION=${npm_package_version}

if [ -e $CONFIG ]; then
    # sed to replace version in config.xml
    sed -i '' "s/\(widget.*version=\"\)\([0-9,.]*\)\"/\1$NEW_VERSION\"/" $CONFIG
    git add $CONFIG
    echo "Updated $CONFIG with version $NEW_VERSION"
else
    echo 'Could not find config.xml'
    exit 1
fi

还有an npm package。总有一个npm软件包。像这样使用:

npm install --save-dev cordova-set-version

package.json

  "scripts": {
    ...
    "version": "cordova-set-version --version ${npm_package_version} && git add config.xml",
    ...
  },

它不能解决大部分重复问题,但是可以忍受一些。