Laravel CSS-Minifyコマンドを作成する方法
キーテイクアウト
Laleveray Laravel Artisan:Laravelの職人コマンドラインツールを利用して、CSS模倣のカスタムコマンドを作成し、Web開発プロジェクトのワークフロー効率を高めます。
- カスタムコマンドの作成:「PHP Artisanコマンド:Make`を使用してカスタムコマンドを簡単に作成します。名前を挙げ、保存、名前を付けるオプションを使用して、Laravelアプリケーションでテーラード機能を可能にします。
- 縮小オプション:CSSファイルの連結とコメントの保存を処理するためのコマンドにオプションを実装し、さまざまな開発ニーズに基づいて柔軟性を提供します。 コマンド登録:「artisan.php」ファイルまたはパッケージ開発のためのサービスプロバイダーのいずれかを使用して、Laravelの職人システム内に新しいコマンドを登録するようにしてください。
- 実行と出力:コマンドを使用して、連結とコメントの保存のためのオプションのフラグを使用して、CSSファイルをマイニングし、実行プロセス中に有益なメッセージを使用してコマンドフィードバックを改善します。
- 何を構築していますか このチュートリアルでは、CSSアセットを監督するコマンドを作成します。これは次のように使用されます。
- output_path :(必須)ミニフォームファイルを保存するパス(style.css-> style.min.css)。 file1 ... filen :(必須)マイニル化するファイルのリスト。
- コメント:(オプション)このオプションを追加してコメントを保持します
- concat :(オプション)onifiedファイルをall.min.css。laravelコマンドとは
<span>cssmin 'output_path' 'file1'...'fileN' --comments --concat</span>
- 職人は、Laravelのコマンドラインユーティリティの名前です。事前定義されたコマンドのセットが付属しており、PHP Artisanリストでリストできます。特定のコマンドのヘルプを表示したい場合は、PHP Artisan Helpコマンドを使用できます。
- CSS Minifierコマンドの作成
- 職人コマンドを作成するには、コマンドを使用できます。コマンドを作成します。このコマンドは、1つの引数を受け入れます
- 名前:コマンドのクラス名。
- および3つのオプション:
- コマンド:コマンドを実行するために入力する必要がある名前
- パス:デフォルトでは、コマンドはApp/Commandsフォルダー内に保存されますが、このオプションで変更できます。
<span>cssmin 'output_path' 'file1'...'fileN' --comments --concat</span>
- getoptions:コマンドに渡すことができるオプションまたはスイッチのリストを返します。 (例えば - コメント)。
- 注:オプションには値がある場合とない場合があります。コメントはコマンドに渡された場合に真実を返すフラグです。
コマンドPHP Artisan cssmin 'args'を実行しようとすると、「CSSMIN」が定義されていません。
コマンドを登録するには、artisan.phpファイルに追加する必要があります:getArgumentsメソッドでは、出力とファイルを定義します。
引数を定義するには、値の配列を渡す必要があります。<span>use Illuminate<span>\Console\Command</span>; </span><span>use Symfony<span>\Component\Console\Input\InputOption</span>; </span><span>use Symfony<span>\Component\Console\Input\InputArgument</span>; </span> <span>class CssminCommand extends Command{ </span> <span>protected $name = 'cssmin'; </span> <span>protected $description = 'Command description.'; </span> <span>public function __construct(){ </span> <span><span>parent::</span>__construct(); </span> <span>} </span> <span>public function fire(){ </span> <span>// </span> <span>} </span> <span>protected function getArguments(){ </span> <span>return array( </span> <span>array('example', InputArgument<span>::</span>REQUIRED, 'An example argument.'), </span> <span>); </span> <span>} </span> <span>protected function getOptions(){ </span> <span>return array( </span> <span>array('example', null, InputOption<span>::</span>VALUE_OPTIONAL, 'An example option.', null), </span> <span>); </span> <span>} </span><span>}</span>
名前:引数を取得するときに使用するキー名。
モード:3つのオプションのいずれかを持つことができます:
<span>Artisan<span>::</span>add( new CssMinCommand ); </span> <span>//or through the container </span><span>Artisan<span>::</span>add( App<span>::</span>make("CssMinCommand") );</span>
- inputargument :: optional:引数はオプションです。
- inputargument :: is_array:引数は複数の値を受け入れます(ex:file1 ... filen)
ただし、inputargument :: is_array |のように組み合わせることができますinputargument ::必須(引数が必要であり、配列である必要があります)
説明:コマンドヘルプを印刷するときに役立ちます。- defaultValue:引数が提供されていない場合
- したがって、getargumentsメソッドは次のとおりです
- 注:IS_ARRAY引数を使用する場合、返された引数アレイの最後の引数である必要があります。 (明らかに)。
- 名前:オプションの名前(例:コメント)。
<span>array( 'name', 'mode', 'description', 'defaultValue' )</span>
value_none:オプションがブールフラグであることを示します(ex: - verbose)。
説明:コマンドヘルプを印刷するときに役立ちます
defaultValue:オプション値が提供されていない場合
<span>protected function getArguments(){ </span> <span>return array( </span> <span>array( </span> <span>'output', </span> <span>InputArgument<span>::</span>REQUIRED, </span> <span>'Path to output directory' </span> <span>), </span> <span>array( </span> <span>'files', </span> <span>InputArgument<span>::</span>IS_ARRAY | InputArgument<span>::</span>OPTIONAL , </span> <span>"List of css files to minify" </span> <span>), </span> <span>); </span> <span>}</span>
<span>cssmin 'output_path' 'file1'...'fileN' --comments --concat</span>
火災方法と呼ばれる場合、議論とオプションを収集する必要があります。私たちは私たちのためにそれを行うために別の機能を作成できます:
<span>use Illuminate<span>\Console\Command</span>; </span><span>use Symfony<span>\Component\Console\Input\InputOption</span>; </span><span>use Symfony<span>\Component\Console\Input\InputArgument</span>; </span> <span>class CssminCommand extends Command{ </span> <span>protected $name = 'cssmin'; </span> <span>protected $description = 'Command description.'; </span> <span>public function __construct(){ </span> <span><span>parent::</span>__construct(); </span> <span>} </span> <span>public function fire(){ </span> <span>// </span> <span>} </span> <span>protected function getArguments(){ </span> <span>return array( </span> <span>array('example', InputArgument<span>::</span>REQUIRED, 'An example argument.'), </span> <span>); </span> <span>} </span> <span>protected function getOptions(){ </span> <span>return array( </span> <span>array('example', null, InputOption<span>::</span>VALUE_OPTIONAL, 'An example option.', null), </span> <span>); </span> <span>} </span><span>}</span>
引数とオプションの方法は、鍵を引数として受け取り、適切な値を返します。
この例を清潔でシンプルに保つために、この単純な機能を削除プロセスのために小さな変更で使用します。引数(ファイル)を処理するために、仕事をするための別の方法を作成します。
<span>Artisan<span>::</span>add( new CssMinCommand ); </span> <span>//or through the container </span><span>Artisan<span>::</span>add( App<span>::</span>make("CssMinCommand") );</span>
最後に、私たちの火災方法は2つの方法のみを呼び出します。
<span>array( 'name', 'mode', 'description', 'defaultValue' )</span>
ヒント:呼び出しメソッドを使用して外部コマンドを実行することもできます。
<span>protected function getArguments(){ </span> <span>return array( </span> <span>array( </span> <span>'output', </span> <span>InputArgument<span>::</span>REQUIRED, </span> <span>'Path to output directory' </span> <span>), </span> <span>array( </span> <span>'files', </span> <span>InputArgument<span>::</span>IS_ARRAY | InputArgument<span>::</span>OPTIONAL , </span> <span>"List of css files to minify" </span> <span>), </span> <span>); </span> <span>}</span>
最初のコマンドは、public/cssディレクトリに2つのファイル(style.min.css、responsive.min.css)を作成します。
<span>array('name', 'shortcut', 'mode', 'description', 'defaultValue')</span>
私たちのコマンドはあまり説明的ではなく、メッセージや通知を提供しません!
コマンドの改善<span>protected function getOptions(){ </span> <span>return array( </span> <span>array('comments', 'c', InputOption<span>::</span>VALUE_NONE, 'Don\'t strip comments' , null), </span> <span>array('concat', null, InputOption<span>::</span>VALUE_NONE, 'Concat the minified result to one file' , null), </span> <span>); </span> <span>}</span>
続行する前に、最終的なgithubリポジトリで、それぞれを切り替えてテストできるように、コマンドの新しいタグを作成します。
コマンドを少し冗長にするために、Laravelはいくつかの出力関数を提供します。
これは出力されます:
メッセージを表示するだけで、ユーザーに情報を尋ねることができます。例:
<span>private function init(){ </span> <span>// retrun an array </span> <span>$this->files = $this->argument('files'); </span> <span>// return a string </span> <span>$this->output_path = $this->argument('output'); </span> <span>// return true if passed, otherwise false </span> <span>$this->comments = $this->option('comments'); </span> <span>// return true if passed, otherwise false </span> <span>$this->concat = $this->option('concat'); </span><span>}</span>
askメソッドは、ユーザーにy/nのみではなく入力を依頼し、空のままにしている場合、デフォルト値が返されます。
選択方法は、ユーザーに選択できる番号付きリストを提供し、空のままにしている場合、デフォルトの値が返されます。
<span>private function minify( $css, $comments ){ </span> <span>// Normalize whitespace </span> <span>$css = preg_replace( '/\s+/', ' ', $css ); </span> <span>// Remove comment blocks, everything between /* and */, unless preserved with /*! ... */ </span> <span>if( !$comments ){ </span> <span>$css = preg_replace( '/\/\*[^\!](.*?)\*\//', '', $css ); </span> <span>}//if </span> <span>// Remove ; before } </span> <span>$css = preg_replace( '/;(?=\s*})/', '', $css ); </span> <span>// Remove space after , : ; { } */ > </span> <span>$css = preg_replace( '/(,|:|;|\{|}|\*\/|>) /', '', $css ); </span> <span>// Remove space before , ; { } ( ) > </span> <span>$css = preg_replace( '/ (,|;|\{|}|\(|\)|>)/', '', $css ); </span> <span>// Strips leading 0 on decimal values (converts 0.5px into .5px) </span> <span>$css = preg_replace( '/(:| )0\.([0-9]+)(%|em|ex|px|in|cm|mm|pt|pc)/i', '.', $css ); </span> <span>// Strips units if value is 0 (converts 0px to 0) </span> <span>$css = preg_replace( '/(:| )(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)/i', '0', $css ); </span> <span>// Converts all zeros value into short-hand </span> <span>$css = preg_replace( '/0 0 0 0/', '0', $css ); </span> <span>// Shortern 6-character hex color codes to 3-character where possible </span> <span>$css = preg_replace( '/#([a-f0-9])\1([a-f0-9])\2([a-f0-9])\3/i', '#', $css ); </span> <span>return trim( $css ); </span> <span>}//minify</span>
- 実際、LaravelはSymfonyのコンソールAPIをよりシンプルで冗長にしているだけです。
コマンドをもっと冗長にし、実行されたタスクについてユーザーを更新しておきましょう。
私たちの関数は、何が起こっているかを追跡するためにいくつかの便利なメッセージを印刷しました。
- 注:これは、GitHubリポジトリのコマンドのV2としてタグ付けされます。
- アプリケーションを作成するとき、利用可能なルート(PHP職人ルート)のリストをダンプすることに慣れています。
Symfonyは、そのようなテーブルを簡単に印刷できる関数を提供します。例については、ドキュメントを確認してください。次に、Symfony Console Helpersを使用する方法を確認します。 Symfony Console Helpersを使用して
Symfony Helpersの使用を説明するために、進行状況ヘルパーを使用して、ユーザーがジョブの進捗状況について最新の状態に保ちます。
initメソッドの最後に、ヘルパーセットからの進捗が必要になり、進行状況を開始します。
startメソッドは2つの引数を受け入れます。$ this-> outputは、symfonyコンソールからのコンソールoutインスタンスです。 2番目の引数は、ステップの最大数です。
<span>cssmin 'output_path' 'file1'...'fileN' --comments --concat</span>
複数のファイルを使用してコマンドを試したり、スリープ関数ラインを解除してライブ効果を確認できます。
<span>use Illuminate<span>\Console\Command</span>; </span><span>use Symfony<span>\Component\Console\Input\InputOption</span>; </span><span>use Symfony<span>\Component\Console\Input\InputArgument</span>; </span> <span>class CssminCommand extends Command{ </span> <span>protected $name = 'cssmin'; </span> <span>protected $description = 'Command description.'; </span> <span>public function __construct(){ </span> <span><span>parent::</span>__construct(); </span> <span>} </span> <span>public function fire(){ </span> <span>// </span> <span>} </span> <span>protected function getArguments(){ </span> <span>return array( </span> <span>array('example', InputArgument<span>::</span>REQUIRED, 'An example argument.'), </span> <span>); </span> <span>} </span> <span>protected function getOptions(){ </span> <span>return array( </span> <span>array('example', null, InputOption<span>::</span>VALUE_OPTIONAL, 'An example option.', null), </span> <span>); </span> <span>} </span><span>}</span>
注:このバージョンは、最終リポジトリでV3としてタグ付けされます。
結論
この記事では、Laravelコマンドをどのように作成および拡張するかを学びました。 Laravelには、探索できる多くの組み込みコマンドがあり、GitHubの最終リポジトリを確認して最終結果をテストすることもできます。質問?コメント?もっと職人のコマンドチュートリアルを見たいですか?お知らせください!
Laravel CSS Minify Command
laravelでCSSを削除する目的は何ですか?
laravelでCSSを削除することは、ウェブサイトまたはアプリケーションを最適化する上で重要なステップです。これには、CSSファイルからスペース、コメント、ラインブレイクなどの不要な文字を削除するプロセスが含まれます。このプロセスは、CSSファイルのサイズを削減し、クライアントに転送する必要があるデータの量を減らします。これにより、ウェブサイトまたはアプリケーションの負荷時間を大幅に改善し、ユーザーエクスペリエンスを向上させます。 LaravelアプリケーションのWebpackビルドステップを定義するためのAPI。これは、いくつかの一般的なCSSおよびJavaScriptの前処理をサポートしています。 Laravel Mixを使用することにより、不要な文字を手動で削除することなく、単一のコマンドでCSSファイルを簡単にマイニングできます。これにより、時間を節約するだけでなく、CSSファイルが可能な限り最適化されることも保証します。ミックス。 CSSファイルを削除するのに役立ついくつかのオンラインツールとNPMパッケージが利用可能です。ただし、Laravelミックスを使用することは、Laravelとシームレスに統合され、CSSファイルを管理および最適化するためのシンプルで便利な方法を提供するため、推奨されます。LaravelでCSSを模倣している間に直面する可能性のある問題は
LaravelでCSSを模倣することは一般に簡単なプロセスです。CSSファイルに構文エラーが含まれている場合、問題が発生する可能性があります。これらのエラーにより、模倣プロセスが故障し、最適化されていないCSSファイルが生じる可能性があります。したがって、CSSファイルがそれらを監督しようとする前に、CSSファイルがエラーがないことを確認することが重要です。 Laravelでは、Laravel Mixのソースマップ機能を使用してデバッグできます。ソースマップは、模倣されたCSSファイルを元のソースファイルにマッピングするファイルであり、問題を簡単にトレースして修正できるようにします。はい、Laravel Mixのバージョン機能を使用して、LaravelでのCSSミニフィケーションのプロセスを自動化できます。この機能は、制作ビルドコマンドを実行するたびにCSSファイルを自動的に模倣します。これにより、CSSファイルが毎回手動で削除することなく、常に最適化されます。 Laravelアプリケーションの。 CSSファイルのサイズを縮小することにより、クライアントに転送する必要があるデータの量を減らすことができます。これにより、読み込み時間が短縮され、ユーザーエクスペリエンスが向上します。
Laravel Mixを使用して他のタイプのファイルをマイニングできますか? JavaScriptファイルをマイニングします。これにより、Laravelアプリケーションをさらに最適化し、クライアントに転送する必要があるデータの量を減らすことができます。 CSSファイルを連結するには、サイズを縮小するための不要な文字には、複数のCSSファイルを単一のファイルに結合することが含まれます。どちらのプロセスもLaravelアプリケーションを最適化するのに役立ちますが、さまざまな目的に役立ちます。模倣すると、個々のCSSファイルのサイズが削減されますが、連結すると、複数のファイルを1つに組み合わせることでHTTP要求の数が減少します。模倣されたCSSファイルが正しく提供されるようにするには、Laravel Mixのバージョン機能を使用できます。この機能は、マニーム化されたCSSファイルのファイル名に一意のハッシュを追加し、クライアントが常に最新バージョンのCSSファイルを受信するようにします。
以上がLaravel CSS-Minifyコマンドを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
