2
votes

Comment pousser les modifications dans package.json de kentico-cloud-delivery de node_modules dans bitbucket

Selon le conseiller du support technique de Kentico, afin d'obtenir mon application create-react-app rendue sur IE11, j'ai dû changer la ligne de code suivante dans le node_modules -> kentico-cloud-delivery -> package.json file:

"main": "./_bundles/kentico-cloud-delivery-sdk.browser.umd.min.js"

Après cette modification, mon application react est rendue sur mon IE local, mais le problème est que comment puis-je pousser cette modification dans le bitbucket afin que l'application react puisse être rendue sur IE11 sur un serveur également.

En règle générale, nous ne poussons jamais les node_modules dans bitbucket et les mettons dans un fichier .gitignore, veuillez me faire savoir comment puis-je résoudre ce problème. Remarque: mon projet est une application create-react-app.


2 commentaires

Pourriez-vous décrire plus en détail les fichiers que vous transférez vers le bitbucket? Et comment faire un déploiement du bitbucket à l'hébergement?


Vous ne devez pas modifier le package.json de votre dépendance. Puisque 'kentico-cloud-delivery-sdk.browser.umd.min.js' est un javascript umd assez standard, vous pouvez l'importer directement dans react - au lieu d'utiliser 'import from' kentico-cloud-delivery ', vous pouvez importer directement à partir de 'kentico-cloud-delivery / _bundles / _bundles / kentico-cloud-deli‌ very-sdk.browser.umd‌ .min'


3 Réponses :


1
votes

En ne poussant pas vos modules npm sur un serveur bitbucket, cela signifie que l'application qui y est exécutée récupérera les packages d'une liste dans un fichier généralement appelé package.json. Donc, vous poussez probablement un fichier .json vers un bitbucket qui contient toutes les informations de dépendance et que vous pouvez modifier pour rendre votre application dans IE11.

Bravo!


2 commentaires

Ce n'est PAS le package général.json qui est généralement situé à la racine d'un projet, c'est le package kentico-cloud-delivery.json à l'intérieur des node_modules, donc je pense que je dois le pousser dans Bitbucket, mais je ne le fais pas savoir-faire?


Dans ce cas, contactez vos aînés et parlez-leur de votre problème spécifique. La façon dont je vois les choses est que vous pouvez soit pousser votre version de kentico-cloud-delivery ou faire un PR s'il est open source.



1
votes

Je voudrais lier le problème où la solution de contournement conseillée consiste à définir react-scripts charger le package approprié et le problème lié pour tout le contexte.

Le problème lui-même est causé par parse5 La bibliothèque ne publie pas de code ES5 sur npm et par conséquent, la compilation échoue.

  • La cause première de ce problème est donc la bibliothèque parse5.

Solutions possibles

1) La recommandation générale de create-react-app Je s pour passer à la version 2 + et ceci est également cité sur la FAQ section du SDK javascript Kentico Cloud.

2) Si vous souhaitez placer la solution de contournement malgré toutes les recommandations car il s'agit d'une modification manuelle du code node_modules > vous devez vous assurer que la modification du package est préservée sur le serveur avant la construction. Donc, après npm install / yarn , vous éditerez le fichier package.json dans node_modules.

Le script (nommé ie workaround.js écrit dans node) ressemblerait à:

{
  ...
  "scripts": {
    "workaround": "node workaround.js"
  }
  ...
}

et définirait un script dans package.json dans votre application de

const fs = require('fs');
const KCPackagePath = 'node_modules/kentico-cloud-delivery/package.json';
const package = require(KCPackagePath);

package.main = "./_bundles/kentico-cloud-delivery-sdk.browser.umd.min.js"

fs.writeFile(configPath, JSON.stringify(package, undefined, 2), function (err) {
  if (err) {
    console.error('Error while writing to file: ' + KCPackagePath);
    throw err;;
  }
  console.info('Package was successfully updated.')
});


0 commentaires

1
votes

La réponse exacte à la question de savoir comment ignorer un fichier dans le référentiel et ignorer le reste du dossier utilise ! format de modèle :

node_modules
!node_modules/kentico-delivery-sdk/package.json

! MAIS! npm install / La commande yarn remplacerait toujours le package.jsoncontent


0 commentaires