Git Archiveと.gitattributesを使用してカスタム.zipファイルを作成する

(画像は削除しました)

問題点

WordPressプラグインを開発し、レビューの提出準備ができました。フォルダの.zipファイルを作成する必要があるんです。そのため、フォルダを右クリックして「圧縮」を選択すればいいでしょうか?

はい、それでも動きます。ただ、そのフォルダには提出したくないものが山ほどあります。.git.github/bin フォルダなど、プラグインに不要なものがたくさんあります。現段階でのディレクトリはこんな感じです:

.github
/bin
/core
/languages
/node_modules
/scripts
/tests
/vendor
.gitignore
.composer.json
plugin.php

解決策 その1 - Git Archive

Googleの力を借りて再び検索し、なかなか良い答えが見つかりました。git archiveです。

マスターブランチにコミットされたすべてのファイルを取り、私のプラグインの.zipファイルを作成してくれます:

git archive --format zip --output \"plugin.zip\" master -0

こうして私の'plugin.zip'ファイルは以下のようになりました:

.github
/bin
/core
/languages
/scripts
/tests
.composer.json
my-plugin.php

解決策 その1.0.1 - .gitattributes

もう一つ問題があります。.zipファイルを見ると、.gitignoreファイルにあったものはすべて.zipから除外されていますが、/testsフォルダや/binフォルダを提出するつもりはありません。そこで再びGoogleに向かい、答えはディレクトリのルートに.gitattributesファイルを作成することでした。

.gitignore export-ignore
.gitattributes export-ignore
.github export-ignore
bin export-ignore
tests export-ignore
composer.json export-ignore
composer.lock export-ignore

注記:ここでの2点に注意が必要です。1つ目は、git archiveコマンドを実行する前に、.gitattributesファイルをコミットする必要があること。そうしないと機能しません。2つ目は、フォルダ名の前に/または./を付けることは機能しないことです(たとえば./bin export-ignore)。

最後に、git archiveコマンドを再実行し、ぴかぴかの状態になりました:

/core
/languages
/scripts
my-plugin.php

次のステップ

この作業をGitHubにプッシュしたときに自動的に行えるようにすると素晴らしいですね。GitHubアクションをセットアップして、いくつかのテストを実行した後で、リリースとしてzipファイルを作成することも想像できます。

もうひとつのこと...

覚えたくないものを覚えるのが面倒なので、アーカイブコマンドを.package.jsonに追加します。これでnpm run archiveを実行するだけで完了です。

{
  "name": "...",
  "version": "...",
  "scripts": {
    "archive": "git archive --format zip --output \"mandrill-mail.zip\" master -0"
  }
}
```<br><br>こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。<br>[https://dev.to/markcummins/make-a-custom-zip-of-your-code-using-git-archive-gitattributes-3ngn](https://dev.to/markcummins/make-a-custom-zip-of-your-code-using-git-archive-gitattributes-3ngn)