12

私は PHP フレームワーク CodeIgniter ( http://ellislab.com/codeigniter ) を使用するプロジェクトに取り組んでおり、その内部では、ヘッダー インクルードで呼び出されるさまざまな CSS/JS ファイルを多数使用しています。

以前に WordPress サイトやその他のプロジェクトで Minify ツールを使用したことがあり、GitHub で CodeIgniter のこのライブラリ ( https://github.com/ericbarnes/ci-minify ) に出くわし、自分のプロジェクトで使用することにしました。

それはすべてうまく機能しますが、残念ながら、非常に多くの CSS および JS ファイルを圧縮しているため、ページが読み込まれるまでに、それを使用していなければもっと速くなっていたでしょう。

私のコントローラーでのコードは次のようになります。

    // minify css
    $cssfiles = array('assets/css/normalize.css', 'assets/css/hook-new.css', 'assets/css/hook.css', 'assets/css/components.css', 'assets/css/rtl.css', 'assets/css/global.css', 'assets/css/body.css', 'assets/css/mediaqueries.css', 'assets/select2-3.4.3/select2.css', 'assets/jquery_bootstrap/css/custom-theme/jquery-ui-1.9.2.custom.css');
    $cssfile = $this->minify->combine_files($cssfiles);
    $csscontents = $this->minify->css->min($cssfile);
    $this->minify->save_file($csscontents, 'assets/css/all.css');

    // minify js
    $jsfiles = array('assets/js/application/js_config.js', 'assets/js/bootstrap.min.js', 'assets/js/custom.js', 'assets/select2-3.4.3/select2.js', 'assets/js/startup.js', 'assets/ckeditor/ckeditor.js', 'assets/js/jquery.validationEngine-en.js', 'assets/js/jquery.validationEngine.js', 'assets/js/scripts.js', 'assets/js/application/js_timer.js');
    $jsfile = $this->minify->combine_files($jsfiles);
    $jscontents = $this->minify->js->min($jsfile);
    $this->minify->save_file($jscontents, 'assets/js/all.js');

そこで、大量の CSS ファイルと JS ファイルの配列を取得して圧縮し、1 つの大きなファイルに保存しています。しかし、これを行うためのより良い、より効率的な方法はありますか?

手でそれらを組み合わせることができることはわかっていますが、作業をしているときは、ふるいにかけなければならない膨大なファイルがあります。それだけでなく、不要な空白を取り除き、コードを本当に凝縮できる Minify の機能が気に入っています。

これを効率的に達成する方法について何か考えはありますか?

ありがとう!

4

6 に答える 6

1

私はgitとフックイベントを使用しているので、私の個人的な解決策は、プッシュとプル時にphpコントローラーにこのcssとjsファイルをレンダリングさせることです。つまり、新しいデータを適用すると、フックがこの php スクリプトを実行し、ファイルを 1 回再レンダリングします。

フック bash スクリプトでphp /var/www/index.php tool/minify、コントローラーのスクリプトを実行するようなものを実行します。

サーバーは実際に必要な場合にのみこれを行うため、より理想的なソリューションのようです。オンザフライ テストを実行する必要がある場合は、css または js ファイルを手動で更新するときに、コントローラーを介してレンダリング縮小ファイルを 1 回実行するだけです。

于 2013-10-29T15:33:10.970 に答える
1

これはあなたが興味を持っているかもしれないものです.私はマティアス・ムリーのミニファイアーの仕事に基づいてこのミニファイング(醜い)ライブラリを書きました.


ライブラリ: CodeIgniter Uglify

インストール

このクラスをインストールするには、srcフォルダの内容をgithub リポジトリから にアップロードするだけapplication/librariesです。次に、CodeIgniter のライブラリ ローダーを使用してクラスをロードします。

$this->load->library("ugly/ugly");

使用例:

// minifying single string of code
// or single file
$result = $this->ugly->css("code goes here");
$result = $this->ugly->js("code goes here")
$result = $this->ugly->js("path/to/file")

// minifying multiple strings or files
$this->ugly->group_start("js");
// or $this->ugly->group_start("css");
$this->ugly->group_add("path/to/file");
$this->ugly->group_add("some code as string");
$result = $this->ugly->group_end();

結果を新しいファイルに保存したり、エコーしたり、何でも好きなようにできます。

ノート:

  • ファイルの配列を渡すこともできます。

    • $this->ugly->group_add( array("file1","file2","file2") );.
  • group_startメソッドでリソースを渡すこともできます。

    • $this->ugly->group_start( array("file1","file2","file2") );.
于 2016-07-08T20:14:17.623 に答える
1

おい....うなり声。それはあなたの命を救うでしょう。sass/can/js ファイルの変更を監視し、自動で縮小して 1 つの js ファイルと 1 つの css ファイルに連結します。ロード時間がどれだけ改善され、どれほど簡単かは驚くべきことです。

于 2016-08-24T21:41:01.537 に答える