web-dev-qa-db-ja.com

Gruntの目的は何ですか?

Gruntに入ろうとしていますが、これは初めてですが、その有用性がわかりません。

タスクランナーであることを理解しています。 bundled、uglify、jshint、minifyなど、スクリプト化されたタスクに変換できるものを実行するために使用できることを理解しています。

しかし、これがどのような利点をもたらすかはわかりません。これらのほとんどすべては、とにかくコマンドラインから実行できます。つまり、単純なシェルスクリプトを使用してそれらを組み合わせることができます。 grunt + gruntfilesのセットアップとタスクの作成は、シェルスクリプトを作成するよりもmore作業であるように思えます。

これについて何が欠けていますか?

72

Gruntは基本的にNodeJSの上に書かれたビルド/タスクマネージャーです。 ANT for Javaに相当するNodeJSスタックと呼びます。以下に、Gruntを使用する一般的なシナリオをいくつか示します。

  1. ミニファイを必要とするjavascriptファイルを含むプロジェクトがあり、通常、フロントエンドビルドを個別に生成します(バックエンドにJavaを使用している場合)。 (grunt-contrib-uglify
  2. 開発中にマシンにコードを保存するとき、ブラウザーにページを自動的にリロードさせたいと思います(小さなことのように思えるかもしれませんが、これにより多くの時間を節約できると信じています)。 (ライブリロード
  3. 開発者が自分のマシンにコードを保存するときに、JSエラー/一般的なベストプラクティス違反の包括的なリストを表示したいと考えています。 (grunt-contrib-jshint
  4. 開発中に開発者のマシンでCSSファイルにコンパイルする必要のあるSASS/LESSファイルを含むプロジェクトがあります。たとえば、SASSファイルを保存するたびに、ページに含めるためにCSSファイルに自動的にコンパイルする必要があります。 。 (grunt-contrib-sass
  5. UIに取り組んでいるフロントエンド開発者のチームと、バックエンドに取り組んでいるバックエンド開発者のチームがあり、フロントエンド開発者がコンパイルとコンパイルを行わずにバックエンドREST AP​​Iを使用したい場合毎回自分のマシンにコードをデプロイします。あなたが疑問に思っている場合、XHRはブラウザによってクロスドメインになることが許可されていないため、これは典型的なWebサーバーのセットアップでは不可能です。 Gruntは、Grunt Connectサーバー内の独自のシステム上のXHRリクエストを別のシステムにリダイレクトするためのプロキシをセットアップできます! (grunt-contrib-proxy、grunt-contrib-connect

シェルスクリプトでこれらのすべてを実行できるとは思いません。要約すると、はい、Gruntfile.jsのセットアップはjavascriptにほとんど触れていない人にとっては退屈です/ nodeJSが初めてです。学習者と同じ痛みを経験しましたが、Gruntは素晴らしいソフトウェアです。フロントエンドプロジェクトに適切なGruntfile.jsをセットアップするために時間を費やしてください。そうすれば、人生をずっと楽にしてくれたことに感謝します:)

The Advantage vs Shellスクリプト:

  1. これらのタスクのすべてに対してシェルスクリプトを作成する場合、すべてのニーズに合わせて保守し、カスタマイズするのは面倒です。 Gruntfile.jsは実際、非常に簡単です。実行するタスク、それぞれのソースとターゲットを指定して、それを初期化する設定があります。

  2. Yeoman、Gulpのプロジェクトシードジェネレーターとの統合は、考慮すべきもう1つの主要な要因です。 YeomanとGulpには、インテリジェントなデフォルトのGruntfile.jsが付属しています。彼のチームの唯一のUIコントリビューターである誰かにとって、これは私にとって貴重です!

  3. フロントエンド技術に取り組んでいる人にとって、あなたと一緒に働いている人が複数いるなら、彼らがあなたのことを知るよりも、SOに関する多くの答えですでに十分に文書化されているGruntを知るのはかなり簡単ですシェルスクリプト。これは、大規模なチームの要因になる場合があります。

  4. Gruntの多数のプラグインは、基本機能を拡張します。シェルスクリプトが非常に人気があり、非常にモジュール化されていない限り、プラグインがビルドされていることはわかりません。これは、プロジェクトに新しいフロントエンドテクノロジーを含めることにもなります。明日、プロジェクトでTypeScriptを使用する場合は、シェルスクリプトにこれを組み込み、自分の努力で説明する必要があります。 Gruntを使用すると、「npm install」と同じくらい簡単で構成を追加できます。

132
shashanka n

Accepted Answer で指摘されているほとんどの利点に同意しますが、キースチルケルが強調している Grunt&Gulpの使用を停止する理由

したがって、いくつかの利点はGruntのオーバーヘッドによって反論されます。少なくとも、Gruntを使用するかどうかの最終決定では、これらすべてを考慮する必要があります。

10
Miguel Gamboa