Как протолкнуть изменения в package.json kentico-cloud-доставке node_modules в bitbucket

#reactjs #bitbucket #node-modules #kentico-kontent

#reactjs #bitbucket #модули узлов #kentico-содержимое

Вопрос:

По словам консультанта технической поддержки Kentico, для того, чтобы мое приложение create-react-app отображалось в IE11, мне пришлось изменить следующую строку кода внутри файла node_modules -> kentico-cloud-delivery -> package.json:

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

После этого изменения мое приложение react рендерится в моем локальном IE, но проблема в том, как я могу протолкнуть это изменение в bitbucket, чтобы приложение react могло также отображаться в IE11 на сервере.

Что касается того, что обычно мы никогда не помещаем node_modules в bitbucket и не помещаем его в файл .gitignore, не могли бы вы, пожалуйста, сообщить мне, как я могу решить эту проблему. Примечание: Мой проект представляет собой приложение create-react-app.

Комментарии:

1. Не могли бы вы более подробно описать, какие файлы вы отправляете в bitbucket? И как вы выполняете развертывание из bitbucket на хостинг?

2. Вам не следует изменять package.json вашей зависимости. Поскольку ‘kentico-cloud-delivery-sdk.browser.umd.min.js ‘ это довольно стандартный umd javascript, вы можете импортировать его непосредственно в react — вместо того, чтобы использовать ‘импорт из ‘kentico-cloud-delivery’, вы можете выполнить импотенцию непосредственно из ‘kentico-cloud-delivery/_bundles/_bundles/kentico-cloud-delivery-sdk.browser.umd.min’

Ответ №1:

Не отправляя ваши npm-модули на сервер bitbucket, это означает, что запущенное там приложение будет извлекать пакеты из списка в файле, обычно называемом package.json. Итак, вы, вероятно, отправляете файл .json в bitbucket, который содержит всю информацию о зависимостях и который вы можете отредактировать для отображения вашего приложения в IE11.

Приветствия!

Комментарии:

1. Это НЕ обычный package.json, который обычно находится в корне проекта, это kentico-cloud-delivery package.json внутри node_modules, поэтому я думаю, что мне нужно протолкнуть его в Bitbucket, но я не знаю как?

2. В этом случае свяжитесь со своими старшими сотрудниками и расскажите им о вашей конкретной проблеме. Я вижу это так, что вы можете либо протолкнуть свою версию kentico-cloud-delivery, либо сделать PR, если у нее открытый исходный код.

Ответ №2:

Я хотел бы связать проблему, в которой рекомендуемый обходной путь заключается в настройке react-scripts для загрузки соответствующего пакета и связанной проблемы для всего контекста.

Вопрос сам возникает из-за parse5 библиотека не публиковать в ES5 код , чтобы НПМ и поэтому сборка не удается.

  • Итак, основной причиной этой проблемы является библиотека parse5.

Возможные решения

1) Общая рекомендация от create-react-app i по обновлению до версии 2 , которая также приведена в разделе часто задаваемых вопросов Kentico Cloud javascript SDK.

2) Если вы хотите применить обходной путь, несмотря на все рекомендации, потому что это ручное изменение автоматически управляемого node_modules пакета, вам нужно убедиться, что изменение пакета сохраняется на сервере до выполнения сборки. Итак, после npm install / yarn вы должны отредактировать файл package.json в node_modules .

Скрипт (именованный, т.е. workaround.js написанный в node) будет выглядеть следующим образом:

 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.')
});
  

и определите скрипт в package.json вашем приложении из

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

Ответ №3:

Точный ответ на вопрос о том, как игнорировать один файл в репозитории и игнорировать остальные в папке, заключается в использовании ! формата шаблона:

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

!НО!команда npm install / yarn все равно заменила бы package.json содержимое