web-dev-qa-db-ja.com

Composer gitはモジュールをダウンロードする代わりにモジュールを複製していますか?

私のcomposerファイルは次のようになります:

{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0+",
    "require": {
        "composer/installers": "^1.0.21",
        "wikimedia/composer-merge-plugin": "~1.3",
        "drupal/drupal-extension": "~3.0",
        "drupal/search_api": "1.x-dev",
        "drupal/search_api_view_modes": "1.x-dev",
        "drupal/paragraphs": "^1.0",
        "drupal/features": "3.x-dev",
        "drupal/robotstxt": "^1.0",
        "drupal/search_api_solr": "1.x-dev",
        "drupal/metatag": "1.x-dev",
        "drupal/pathauto": "1.x-dev",
        "drupal/acquia_connector": "^1.4",
        "drupal/sharethis": "2.x-dev",
        "drupal/field_group": "1.x-dev",
        "drupal/ckwordcount": "^1.0",
        "drupal/menu_link_attributes": "1.x-dev",
        "drupal/yaml_editor": "1.x-dev",
        "drupal/devel": "1.x-dev",
        "drupal/menu_block": "^1.4"
    },
    "replace": {
        "drupal/core": "~8.2"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "preferred-install": "dist",
        "autoloader-suffix": "Drupal8"
    },
    "repositories": {
        "drupal": {
            "type": "composer",
            "url":  "https://packages.drupal.org/8"
        }
    },
    "extra": {
        "_readme": [
            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
            "To change the autoloader you can edit ./autoload.php."
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": false,
            "replace": false,
            "merge-extra": false
        },
        "installer-paths": {
            "modules/contrib/{$name}": ["type:drupal-module"],
            "themes/contrib/{$name}": ["type:drupal-theme"]
        }
    },
    "autoload": {
        "psr-4": {
            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
        }
    },
    "scripts": {
        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
    }
}

「dev」ステータスとしてダウンロードされたすべてのモジュールについて、それらはgitクローンされたように見えます。したがって、変更は認識されないか、私のgitツリーに保存されず、プッシュしません。これらのモジュールは私のリモートリポジトリに到達せず、リモートWebサイトにも表示されませんでした。

これがどのように発生するかはわかりませんが、当分の間、以下のことを行う必要がありました。

  • モジュールディレクトリにcd
  • rm -rf .gitフォルダ
  • git rm --cached modulename
  • git add modulename
  • git commit -m "モジュールの追加"
  • git push

次に、モジュールをプロジェクトリポジトリに入れて、リモートサーバーに配置します。

ここで正しいワークフローは何ですか?ビルドプロセスやツールをリモートで実行していませんが、composerでインストールしたモジュールとテーマを追跡してプロジェクトビルドを保持したいです。

6
Kevin

はい、それはあなたが開発バージョンを指定するときにそれがすることです。

composerプロジェクトを処理するための推奨される方法は、composerマネージコードをしないコミットすることです。コミットするのはcomposer.lockファイルだけであり、composerをインストールすると、毎回まったく同じバージョンがインストールされることが保証されます。

詳細とその回避方法については、 https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md を参照してくださいあなたが本当にしたいなら。

https://github.com/drupal-composer/drupal-project をご覧ください。推奨されるgit ignore設定を使用して事前構成され、ベンダーを維持することで最新の標準に準拠したプロジェクト環境を提供しますフォルダーおよびパブリックWebフォルダーからのその他の非publichファイル。

更新:gitがそれを行う理由の1つは、drupal.org AFAIKが特定の開発スナップショットをダウンロードする可能性を与えず、最新のものだけをダウンロードできることです。そして、composerの主な機能の1つは、composer installを実行するたびに、composer updateを実行するまで、ロックファイルをビルドしてまったく同じコミットを取得することです。再び。

6
Berdir