web-dev-qa-db-ja.com

Composerは、何かをするたびに.htaccess(およびその他のファイル)を上書きし続けます

Composerを使用して何かを更新しようとするたびに、ファイルのロードが上書きされます。それが上書きするファイルの1つは、カスタマイズした.htaccessです。そのため、常にパッチを適用し続ける必要があります。以下は、更新を要求したパッケージが更新の必要がない場合でも、これを実行する例(以下)です。 「drupal/core-composer-scaffold」パッケージを使用してサイトを作成したためだと思います。私はこれらの指示に従っていたので、それを行いました: https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies#composer- from-scratch

(それがWordの場合)繰り返し足場を維持するために、私は何を間違っていますか?ありがとう。

~/sites/default$ composer update drupal/security_review
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Package academicpuma/citeproc-php is abandoned, you should avoid using it. Use seboettg/citeproc-php instead.
Package container-interop/container-interop is abandoned, you should avoid using it. Use psr/container instead.
Package technosophos/LibRIS is abandoned, you should avoid using it. No replacement was suggested.
Package zendframework/zend-diactoros is abandoned, you should avoid using it. Use laminas/laminas-diactoros instead.
Package zendframework/zend-escaper is abandoned, you should avoid using it. Use laminas/laminas-escaper instead.
Package zendframework/zend-feed is abandoned, you should avoid using it. Use laminas/laminas-feed instead.
Package zendframework/zend-stdlib is abandoned, you should avoid using it. Use laminas/laminas-stdlib instead.
Writing lock file
Generating autoload files
Scaffolding files for drupal/core:
  - Copy [project-root]/.editorconfig from assets/scaffold/files/editorconfig
  - Copy [project-root]/.gitattributes from assets/scaffold/files/gitattributes
  - Copy [web-root]/.csslintrc from assets/scaffold/files/csslintrc
  - Copy [web-root]/.eslintignore from assets/scaffold/files/eslintignore
  - Copy [web-root]/.eslintrc.json from assets/scaffold/files/eslintrc.json
  - Copy [web-root]/.ht.router.php from assets/scaffold/files/ht.router.php
  - Copy [web-root]/.htaccess from assets/scaffold/files/htaccess
  - Copy [web-root]/example.gitignore from assets/scaffold/files/example.gitignore
  - Copy [web-root]/index.php from assets/scaffold/files/index.php
  - Copy [web-root]/INSTALL.txt from assets/scaffold/files/drupal.INSTALL.txt
  - Copy [web-root]/README.txt from assets/scaffold/files/drupal.README.txt
  - Copy [web-root]/robots.txt from assets/scaffold/files/robots.txt
  - Copy [web-root]/update.php from assets/scaffold/files/update.php
  - Copy [web-root]/web.config from assets/scaffold/files/web.config
  - Copy [web-root]/sites/README.txt from assets/scaffold/files/sites.README.txt
  - Copy [web-root]/sites/development.services.yml from assets/scaffold/files/development.services.yml
  - Copy [web-root]/sites/example.settings.local.php from assets/scaffold/files/example.settings.local.php
  - Copy [web-root]/sites/example.sites.php from assets/scaffold/files/example.sites.php
6
naomi

それがDrupalのComposer Scaffoldです。"drupal/core-composer-scaffold": "^8.8.0"またはプロジェクトのcomposer.jsonファイルで別のバージョンとしてリストされています。

Composerコマンドを実行するたびに特定のスキャフォールドファイルが上書きされないようにするには、プロジェクトの"extra"composer.jsonセクションで1つずつ指定する必要があります。を参照してください。 足場ファイルを除く のドキュメント。

次のスニペットは、.htaccessおよびdevelopment.services.ymlが上書きされないようにします。

"drupal-scaffold": {
    "locations": {
        "web-root": "web/"
    },
    "file-mapping": {
        "[web-root]/.htaccess": false,
        "[web-root]/sites/development.services.yml": false
    }
},

ただし、たとえばセキュリティ更新のために、Drupalの最新の.htaccessを常に入手するようにしたい場合があります。そのため、このファイルをDrupal Scaffoldから除外しないでくださいが、代わりにパッチを適用します。 -Scalfoldファイルの変更 のドキュメントを参照してください。

.htaccessのパッチを作成し、プロジェクトルートの「パッチ」と呼ばれるフォルダーに配置します。次に、"post-drupal-scaffold-cmd"ファイルの"scripts"セクションにcomposer.jsonを設定して、このパッチがDrupalのコア.htaccessに毎回適用されるようにしますDrupal scaffoldingトリガーされます。

"scripts": {
    ...
    "post-drupal-scaffold-cmd": [
        "cd web && patch -p1 < ../patches/htaccess-ssl.patch"
    ]
}
5
leymannx