いくつかのPHPフレームワークを学び始めたところです。私が試した例はすべて、これまで使用したことのないcomposer
を使用しているため、まだ正確にはわかりません。
composer.json
でいくつかのJSおよびCSSライブラリを指定し、composer install
を実行しました。これで、これらのライブラリがvendor
フォルダに追加されました。
bootstrap/dist/css/bootstrap.min.css
など、これらのフォルダーにあるJSファイルとCSSファイルをどのように使用するのでしょうか。私が試した例では、public/css
フォルダーにコピーを置くか、volt
ファイルの<link href="//netdna.bootstrapcdn.com/bootswatch/2.3.1/united/bootstrap.min.css" rel="stylesheet">
のようなリモートリンクを使用します。
何らかの理由で、アプリケーションでこのようなリモートリンクが気に入らない(いつか「ダウン」する可能性があるのではないかと心配している)。しかし、vendor
からpublic
にコピーする適切なファイルを選択する必要があるため、他のオプションもあまり美しくないと思います。
これを行うための「自動」方法はありませんか?または、コントローラーに指定して、ファイルをpublic
にコピーすることもできますか?
Composerは、PHP依存関係をフェッチするように作成されています。CSSやJSファイルなどの他のWebアセットではうまく機能しません。
Composer Asset Plugin
アセットのフェッチの問題に対処するために、Composer Asset PluginはFrançoisPluchino(fxp)によって開発されました。ComposerにNPM/Bower依存関係マネージャーを提供します。これらの依存関係マネージャーへのブリッジであり、フェッチします。ベンダーフォルダにあるもの。
BowerまたはNPMはいつでも直接使用できることに注意してください。 PHP依存関係をComposer composer.jsonで定義します。bower.jsonで定義したBowerで取得します。よりクリーンなアプローチかもしれません。
CLIから必要になる場合があります:_composer require fxp/composer-asset-plugin
_
たとえば、アセット「TwittersBootstrap」と「Jquery」をフェッチするには:
_{
"require": {
"bower-asset/bootstrap": "dev-master",
"bower-asset/jquery-2.1.0": "2.1.0"
}
}
_
一部のフレームワークは、主に個々のフォルダーレイアウトをサポートし、ベンダーフォルダーから正しい場所にコピーするために、アセットのカスタムハンドラーを提供します。 Phalconにアセットをフェッチするものがあるかどうかはわかりません。
これを行うための「自動」方法はありませんか?または、コントローラーに指定して、ファイルをパブリックにコピーすることもできますか?
アセットをベンダーフォルダーからアプリケーションレイアウトの正しい場所にコピーするのは別の話です。
これを自動的に行う方法はありません。メカニズムは自分で用意する必要があります。
たとえば、インストールパスをベンダーから_public/assets
_などに変更できます。 https://github.com/francoispluchino/composer-asset-plugin/blob/master/Resources/doc/indexを参照してください) .md#define-a-custom-directory-for-the-assets-installation
プラグインは物事をコピーしません。
Bower + Grunt(簡単な説明:Bowerでアセットをフェッチし、Gruntでコピーします)
「コントローラーの指定」に最も近いのは、Gruntタスクをセットアップして、Bowerでフェッチした関連するものだけを_web/assets/vendor
_から_web/assets/app
_ folder。
言い換えれば、BowerのようなJSパッケージマネージャーでさえ、メインAPIファイルの自動コピーを提供していません。 Bowerは最新のjQueryバージョンを定義済みのベンダーフォルダーにフェッチしますが、_jquery.min.js
_を_web/assets/js/jquery.min.js
_に自動的にコピーしません。その上にタスクが必要です。