【问题标题】:How to push changes in package.json of kentico-cloud-delivery of node_modules into bitbucket如何将 node_modules 的 kentico-cloud-delivery 的 package.json 中的更改推送到 bitbucket
【发布时间】:2019-08-15 12:12:44
【问题描述】:

根据 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 应用程序。

【问题讨论】:

  • 您能否更详细地描述您将哪些文件推送到 bitbucket?以及如何进行从 bitbucket 到主机的部署?
  • 您不应更改依赖项的 package.json。由于 'kentico-cloud-delivery-sdk.browser.umd.min.js' 是非常标准的 umd javascript,您可以直接在 react 中导入它 - 而不是使用 'import from 'kentico-cloud-delivery' 您可以直接从'kentico-cloud-delivery/_bundles/_bundles/kentico-cloud-delivery-sdk.browser.umd.min'

标签: reactjs bitbucket node-modules kentico-kontent


【解决方案1】:

通过不将你的 npm-modules 推送到 bitbucket 服务器,这意味着运行在那里的应用程序将从通常称为 package.json 的文件中的列表中获取包。因此,您可能正在将 .json 文件推送到包含所有依赖项信息的 bitbucket,您可以对其进行编辑以在 IE11 中呈现您的应用程序。

干杯!

【讨论】:

  • 它不是一般的package.json,通常位于项目的根目录,它是node_modules里面的kentico-cloud-delivery package.json,所以我认为我必须推送它在 Bitbucket 中,但我不知道如何?
  • 在这种情况下,请联系您的上级并告诉他们您的具体问题。我的看法是,您可以推送您的 kentico-cloud-delivery 版本,或者如果它是开源的,则进行 PR。
【解决方案2】:

我想链接the issue,建议的解决方法是为所有上下文设置react-scripts 加载适当的包和linked issue

问题本身是因为parse5没有将ES5代码发布到npm,因此构建失败。

  • 所以这个问题的根本原因是 parse5 库。

可能的解决方案

1) 一般建议来自create-react-app is 升级到 v.2+,这也在 Kentico Cloud javascript 的 FAQ 部分引用SDK。

2) 如果您想要放置解决方法尽管有所有建议,因为它是对自动管理的 node_modules 的手动更改,您需要确保包的更改保留在服务器上在构建之前。所以在npm install/yarn 之后,您将在node_modules 中编辑package.json 文件。

脚本(命名为workaround.js 写在节点中)看起来像:

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】:

    如何忽略存储库中的一个文件并忽略文件夹中的其余文件的确切答案是使用!pattern format

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

    !但是! npm install/yarn 命令仍将替换 package.jsoncontent

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 2017-11-25
      • 2019-11-24
      • 1970-01-01
      • 2011-12-03
      • 2015-01-05
      相关资源
      最近更新 更多