web-dev-qa-db-fra.com

Cordova 7 - config.xml ou package.json?

J'ai créé et publié avec succès une application sur Cordova - donc je ne suis pas nouveau sur la plate-forme, mais cela n'a pas été sans accrocs et frustrations.

Avec Cordova 7, nous avons maintenant config.xml et package.json, contenant en grande partie les mêmes informations.

Si je veux changer, dites le numéro de version ou le titre, lequel dois-je modifier et comment puis-je mettre à jour l'autre fichier en conséquence?

Rien de ce que j'ai essayé ne semble fonctionner, et il semble plutôt superflu de devoir effectuer les modifications deux fois?

21
Andrew Spode

D'après ce que je peux lire sur le Cordova 7 Release Notes , le package.json sera toujours créé pour refléter le config.xml chaque fois que vous exécutez cordova prepare, s'il n'existe pas. Si un package.json existe, il prendra la préférence (mais seulement pour les choses qui y sont définies, comme les plugins et les plateformes, pour les autres options de configuration config.xml sera toujours utilisé).

Donc, il pourrait être une solution pour vous d'enregistrer vos paramètres dans config.xml, et supprimez toujours le package.json avant d'exécuter cordova prepare, peut-être avec un script npm personnalisé.

12
deltragon

Comme évolution de cette question, il semble que Cordova 9.0.0 ait décidé d'arrêter la synchronisation des fichiers config.xml et package.json maintenant. Ainsi, le package.json est l'emplacement principal pour les informations de plate-forme/plug-in, ce qui semble très étrange à quiconque ayant une expérience significative de Cordova.

Je n'ai vu cela annoncé nulle part, mais je suis tombé dessus en utilisant 9.0.0 et confirmé ci-dessous:

Les modifications incluent: GH-750 Supprimer les plates-formes/plugins d'enregistrement dans config.xml

8
BRass

Pour le numéro de version, vous pouvez le stocker dans package.json et ajoutez un script npm nommé "version" qui met à jour config.xml en conséquence. Ensuite, utilisez toujours npm version au lieu de modifier manuellement le numéro de version.

Du blog de 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

Il y a aussi n paquet npm . Il y a toujours un package npm. Utilisez comme ça:

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

package.json

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

Il ne corrige pas la plupart des doublons, mais le rend légèrement plus supportable. Edit: cordova-set-version reformate également votre config.xml et en supprime tous les commentaires. J'ai déposé n problème .

0
Thomas