【问题标题】:Composer - Install a package without saving it into composer.jsonComposer - 安装包而不将其保存到 composer.json
【发布时间】:2018-07-09 11:51:59
【问题描述】:

我正在尝试创建一个 composer.json 来生成一个现成的 Drupal 8(基于优秀的 Drupal Project)。它运作良好,但我想包含一个自定义主题,该主题将用作任何开发人员的基础。这个主题在 composer.json "my-package/my-theme": "*" 中调用,并自动包含在 Drupal 的主题文件夹中。完美!

问题是:当您对此主题进行更改时,如果您运行composer installcomposer update,您的所有更改都会被删除。我理解这是 Composer 的正常行为。

那么,是否可以安装一个包而不将其保存到 composer.json / composer.lock 中?

  • 我尝试执行 composer remove my-package/my-theme --no-update,但它只删除了 composer.json 中的我的包,而不是 composer.lock,这给出了相同的结果。
  • 我应该安装我的包,然后从 composer.json 和 composer.lock 手动删除它吗?
  • 我错过了一个秘密选项吗?

【问题讨论】:

    标签: drupal composer-php drupal-8


    【解决方案1】:

    Answered here 来自 Composer 贡献者:

    这也是故意不可能的,不是缺少功能或 任何事物。供应商文件夹是 Composer 独自处理的。

    Fyi - Node 的 npm 不仅可以安装包而不保存 他们,它甚至是默认的。这是许多人的主要原因之一 人们现在使用yarn,因为它不能不保存,因为它是 在部署到生产环境时发现您非常沮丧 忘记将--save 添加到该重要依赖项中。作曲家之一 主要设计目标是绝对的dev/prod parity 依赖。

    我为遇到相同问题的任何人找到了an alternative solution

    对于任何想实现和我一样的人,我终于做了一个 安装后启动的自定义脚本:

    • 制作主题文件夹的副本
    • 将以前主题系统名称的任何提及更改为新的(文件名 + 直接进入文件)
    • 使用 composer remove 命令删除主题
    • 最后启用新主题

    它对我有用,因为下载的主题只是开始的基础 开发,而不是将要更新的实际主题。

    【讨论】:

      【解决方案2】:

      如果您的主题是安装配置文件的一部分,则它应该存在于 composer.json 文件中。您的开发人员应该只将该主题用作基本主题并创建一个子主题。在该子主题中,开发人员可以覆盖 CSS 以及模板文件和模板函数。

      【讨论】:

      • 在我的情况下这不是一个理想的解决方案,但它可以工作。我还看到我不能简单地从 composer.json 中删除包,因为 Composer 将在下一个 composer update 中删除它
      猜你喜欢
      • 2018-03-16
      • 2021-09-23
      • 2015-11-01
      • 2020-12-01
      • 2016-03-16
      • 2018-06-06
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      相关资源
      最近更新 更多