1

現在、プラグインの開発とテストにVVVを使用しようとしています。私のホスト OS は Win10 です。

私のプラグインは にありD:\Workshop\projects\vendor\moduleます。私はこのフォルダ構造を長い間使用してきましたが、特に Composer や友人と一緒に使用する場合は非常に便利です。

VVV をインストールし、VVでサイトを作成しました。ソースコードが にあるプラグインをテストしたいD:\Workshop\projects\XedinUnknown\my-projectD:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\htdocs\wp-content\pluginsそのため、そのプロジェクトのフォルダーを指すシンボリックリンクを作成します。残念ながら、うまくいきません。VVV と に SSH 接続すると、そこにあるls /srv/www/my-test-site/htdocs/wp-content/pluginsことがわかりますが、もちろん存在しない をmy-project指しています。../../../../../../../XedinUnknown/my-projectsymlink の代わりにジャンクションを作成すると、それは単なる空のファイルになります。

これは、Linux 環境が Windows シンボリック リンクを処理する方法に関係していると思われますが、完全にはわかりません。どういうわけかこれを機能させることは可能ですか?プロジェクト フォルダ全体を VVV にコピーしたくありません。

これもここで扱われます。

4

1 に答える 1

3

それで、私はいくらかの解決策を見つけたようです。プロジェクトのホームにマップする同期フォルダーを追加しました。次に、VM 内の WP プラグイン ディレクトリからそのフォルダーへのシンボリック リンクを作成します。

ステップ 1 - 共有フォルダーを追加する

これは、こちらでCustomfile説明されているように行う必要があります。このファイルは と同じディレクトリにある必要があります。たとえば、の兄弟になります。私の場合、あなたが私の質問に従っているのであれば、それは. ここに置くものはすべて、VVV 全体でグローバルになります。これにより、さまざまな Web サイトでプロジェクトのさまざまな組み合わせを使用することもできます。これらのコンテンツを に追加し、存在しない場合は作成します。VagrantfileVagrantfileD:\Workshop\projects\XedinUnknown\vvv-localCustomfile

config.vm.synced_folder "D:/Workshop/projects", "/srv/projects", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]

もちろん、D:/Workshop/projectsプロジェクトを保存する場所へのパスに置き換える必要があります。スラッシュ ( /) に注意してください。これは Win/Nix で動作します。\\Windows のみの構成の場合、これはエスケープ シーケンスであるため、それらを に置き換える必要があると思います。

ステップ 2 - プロジェクトへのリンクを追加

これは、サイトのvvv-init.shファイルで行う必要があります。私の場合、このファイルは にありました。これは、このサイトD:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\専用のシンボリック リンクを作成したいからですmy-test-site。VVV パスはおそらく異なることに注意してください。また、プロジェクト ディレクトリ内にある必要はありません。VVVのクローンを作成した場所です。以下の行をサイトのvvv-init.shファイルに追加します。

if [ ! -f "htdocs/wp-content/plugins/my-project" ]; then
        echo 'Creating symlink to plugin project...'
        cd ./htdocs/wp-content/plugins
        ln -s /srv/projects/XedinUnknown/my-project my-project

        cd -

fi

上記のスニペットで、パスを目的のプロジェクト パスに変更します。ホスト OS のプロジェクト ルートにライブ/srv/projects/でマップされることに注意してください。inの 2 番目の出現箇所 (最後の単語)を任意のものに置き換えることもできます。後で変更しない限り、プラグインが突然無効になることはありません。my-projectln -s /srv/projects/XedinUnknown/my-project my-project

また、私が理解したことからvvv-init.sh、マシンが起動するたびにではなく、プロビジョニング中に実行されます。したがって、そこでコードを実行したい場合はvagrant up --provision、VVV ディレクトリから実行する必要があります。プロビジョニングしたくない場合は、手動で実行できます。を使用して VVV に SSH で接続しvagrant ssh、次にcd /srv/www/my-test-site(サイトの名前に置き換えmy-test-siteます)、実行します. vvv-init.sh

あとがき

私は Bash スクリプトにまったく慣れていないので、私のソリューションが最適かどうかわかりません。そのため、Bash スクリプトのより良いバージョンを提案してください。私は Ruby も知らないし、Vagrant も初めてなので、遠慮なく の改善を提案してください。Customfileこれは本質的に と同じVagrantfileです。

このソリューションで予想できる問題の 1 つ (これは本質的にファイルシステム アーキテクチャの設計によるものです) は、WordPress がプラグインに変更を加えることを決定した場合、たとえば WP の更新を実行した場合、プラグイン内のすべてのファイルが効果的に削除されることです。リポジトリを含むプロジェクト。したがって、テスト サイトでは、このようなものを使用することをお勧めします。私はこのプラグインとは一切関係ありません。

于 2015-10-19T23:12:14.023 に答える