キーテイクアウト
laravelコマンドとは
<span>cssmin 'output_path' 'file1'...'fileN' --comments --concat</span>
- パス:デフォルトでは、コマンドはApp/Commandsフォルダー内に保存されますが、このオプションで変更できます。
<span>cssmin 'output_path' 'file1'...'fileN' --comments --concat</span>
コマンド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 :: is_array |のように組み合わせることができますinputargument ::必須(引数が必要であり、配列である必要があります)
説明:コマンドヘルプを印刷するときに役立ちます。cssminコマンドには2つのオプションしかありません。オプションを定義するには、配列を渡します:
<span>array( 'name', 'mode', 'description', 'defaultValue' )</span>
value_none:オプションがブールフラグであることを示します(ex: - verbose)。
<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>
コマンドをもっと冗長にし、実行されたタスクについてユーザーを更新しておきましょう。
Symfonyは、そのようなテーブルを簡単に印刷できる関数を提供します。例については、ドキュメントを確認してください。次に、Symfony Console Helpersを使用する方法を確認します。 Symfony Console Helpersを使用して
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ファイルが生じる可能性があります。したがって、CSSファイルがそれらを監督しようとする前に、CSSファイルがエラーがないことを確認することが重要です。 Laravelでは、Laravel Mixのソースマップ機能を使用してデバッグできます。ソースマップは、模倣されたCSSファイルを元のソースファイルにマッピングするファイルであり、問題を簡単にトレースして修正できるようにします。はい、Laravel Mixのバージョン機能を使用して、LaravelでのCSSミニフィケーションのプロセスを自動化できます。この機能は、制作ビルドコマンドを実行するたびにCSSファイルを自動的に模倣します。これにより、CSSファイルが毎回手動で削除することなく、常に最適化されます。 Laravelアプリケーションの。 CSSファイルのサイズを縮小することにより、クライアントに転送する必要があるデータの量を減らすことができます。これにより、読み込み時間が短縮され、ユーザーエクスペリエンスが向上します。
以上がLaravel CSS-Minifyコマンドを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。