2015-12-21 8 views
10

私はいくつかのPHPフレームワークを学び始めています。私が使用しようとした例は、これまで使用していなかったcomposerを使用しています。composerのベンダフォルダにあるCSSファイルとJSファイルをpublicにコピーする方法は?

composer.jsonにJSライブラリとCSSライブラリを指定し、composer installを実行しました。 これらのライブラリは、vendorフォルダに追加されました。

ここで、これらのフォルダにあるJSファイルとCSSファイルはどうすればよいですか?たとえばbootstrap/dist/css/bootstrap.min.css? 私が試した例では、フォルダにコピーを持っているか、volt-ファイル内に<link href="//netdna.bootstrapcdn.com/bootswatch/2.3.1/united/bootstrap.min.css" rel="stylesheet">のようなリモートリンクを使用しています。

私は何らかの理由で、私のアプリケーションでこれらのようなリモートリンクが好きではありません(私は彼らがいつの間にか「ダウン」する可能性があります)。 しかし、もう1つの選択肢はそれほど美しくはありません。私はまだvendorからpublicにコピーするために適切なファイルを選択する必要があるので、私は思っています。

これを行うには '自動'の方法はありませんか?または、それをコントローラーに指定することで、ファイルをpublicにコピーしますか?

答えて

3

作者はPHP依存関係を取得するように書かれています。 CSSやJSファイルなどの他のWebアセットではうまく機能しません。

作曲アセットプラグインは

資産を作曲アセットプラグインをフェッチの問題に対処するためには、フランソワPluchino(FXP)によって開発されました。これは、ComposerのためのNPM/Bower依存関係マネージャを提供します。これらの依存マネージャーへの橋渡しをして、ベンダーフォルダーにそのものを取り込みます。

常にBowerまたはNPMを直接使用することができます。 composer.jsonで定義されたComposerを使用してPHP依存関係を取得します。 bower.jsonで定義されたBowerで資産を取得します。 これはきれいなアプローチかもしれません。

DocumentationからPackagist

あなたはCLIからそれを必要とするかもしれない:

{ 
    "require": { 
     "bower-asset/bootstrap":  "dev-master", 
     "bower-asset/jquery-2.1.0": "2.1.0" 
    } 
} 

いくつかのフレームワークを提供します。composer require fxp/composer-asset-plugin

例えば、資産 "Twitterのブートストラップ" と "jqueryのを" 取得します主に個々のフォルダレイアウトをサポートし、ベンダのフォルダから適切な場所に物をコピーするために、資産のカスタムハンドラが必要です。ファルコンが資産を取得するものを持っているかどうかは分かりません。

「自動」の方法はありませんか?あるいは、それをコントローラに指定して、そのファイルをパブリックにコピーします。

アセットのをベンダーのフォルダからアプリケーションレイアウトの正しい場所にコピーすることは別の話です。

これを行う自動方法はありません。自分でメカニズムを提供する必要があります。

はたとえば、あなたが は周りのものをコピーしませんhttps://github.com/francoispluchino/composer-asset-plugin/blob/master/Resources/doc/index.md#define-a-custom-directory-for-the-assets-installation

プラグインを参照してください、public/assetsか何かにベンダーからインストールパスを変更することがあります。

バウアー+兵卒(簡単:周りのうなり声でものをコピーし、バウアーと資産をフェッチ)

最も近い「コントローラを指定すると、」セットアップにのみ関連するものがフェッチコピーする兵卒タスクだろうにしますBower with web/assets/vendorからweb/assets/appまで。

つまり、BowerのようなJSパッケージマネージャーでさえ、メインAPIファイルの自動コピーが提供されません。 Bowerは、最新のjQueryバージョンを定義されたベンダフォルダにフェッチしますが、jquery.min.jsweb/assets/js/jquery.min.jsに自動的にコピーしません。あなたはその上にタスクが必要です。

+0

私はまだ理解していないことが1つあります。なぜなら、すべての適切な資産が作曲家によってダウンロード/インストールされているように見えるからです。それとも、JSファイルのいくつかが他のパッケージに依存していることを意味していますか?たとえば、 'jQuery'が必要な 'jQuery UI'そして、このプラグインはそれらを「ベンダー」にもダウンロードしますか? – Dylan

+0

独立した依存関係マネージャは、クリーンな構成ファイルを持つ利点があります。ブリッジを動作させるために、プレフィックス設定をcomposer.jsonに追加する必要はありません。別のconfigs、あなたはどこに行くのか知っています。 PHP composer.json Assets bower ... - はい、資産にも依存性があるかもしれません。言い換えれば、JSとCSS資産のためにBowerを見る価値があるかもしれません。 - はい、カスタムディレクトリを定義したり、ファイルを自分自身でコピー/移動したりしない限り、Composerアセットプラグインはそれらをベンダフォルダにダウンロードします。 –

+0

答えにBower + Gruntの組み合わせを追加しました。 –

関連する問題