2012-11-01 8 views
18

私は、サーバー開発(または開発)側の処理でCSS開発にLESSを使用することを検討していますが、生成されたCSSファイルをバージョン管理に残すべきかどうかは判断できません。フック付きのソリューションはたくさんありますが、これはソフトウェアの依存関係をサーバーに追加します。フックをローカルに追加するだけで、ウェブ上のステージングと制作エリアが同じファイルを取得するようにすることができます。だから、質問は次のとおりです。LESSとバージョンコントロールの使用:生成されたCSSをレポに含める必要がありますか?

は、CSSファイルは、バージョン管理に含まれていないか、されて生成する必要がありますか?いくつかのフレームワークでは、特定の理由でCSSファイルが存在する必要があります(つまり、WordPressのテーマには、認識するためにstyle.cssファイルが必要です)。

乾杯!

編集:私は「LESSを使用して検討する」と言うとき、私はそれが必要条件となり意味。新しい開発者は、選択肢がLESSのために選択された後、バニラCSSを使用することはできません。

答えて

9

あなたはかなりあなた自身の質問に答えました。それはあなたのウェブサイトをどのように展開するかによって異なります。

は、サーバーだけでGitのリポジトリから直接引くために起こっている場合:

1)これは、LESSからCSSを生成するためにインストールしたソフトウェアを持っている必要があります。

2)か、リポジトリ内のCSSファイルを含める必要があります。

Webサーバーのリポジトリから直接抜けていない場合は、gitから取得してCSSを生成し、不要なファイルを除外してWebサーバーにコンテンツを転送するビルドスクリプトを作成できます転送から。私の意見で

は、Gitはプロジェクトのソースのすべてを維持するために使用すべきであり、(@thekbbで述べたように)「派生成果物」のどれも。開発者は、開発およびテスト中にこれらの派生成果物を生成するために、すべてのツールをインストールする必要があります。テストサーバーと実動サーバーへのデプロイでは、自動ビルドサーバーがソースを取得し、配布に必要なファイルだけを作成する必要があります。

ソフトウェア開発の場合、Gitリポジトリに.Cと.Hファイル(例えば)を含むMakefileがあります。開発者とビルドサーバーには、実行可能ファイルまたはコンパイル済みライブラリを作成するコンパイラがインストールされています。ファイルが配布用にパッケージ化されている場合、ソースコードはアーカイブの一部ではありません。

は、ウェブ開発のためには、オリジナルのグラフィックス、HTMLテンプレートとLESSファイルのようなソースファイルを持っています。開発者とビルドサーバーは、スクリプトを実行してサイトアセット(LESSファイルからのCSS、テンプレートからの静的HTMLページ、複数のサイズ/形式の平坦化イメージなど)を生成できます。ビルドサーバーは新しいビルドを展開するときに、ソースグラフィックス、テンプレート、およびLESSファイルを除いて、サーバーによって表示されます。

サイトの内容を確認する必要がある人がいる場合は、ステージングサーバーで行う必要があります。それが不可能な場合、自動ビルドサーバーは内部サーバーにZIPファイルを作成して、レビューのためにダウンロードすることができます。

+1

これはすばらしい答えですが、WordPressのようなCSSファイルを必要とするフレームワークを使用している場合は、どの選択肢が最適だと思いますか? –

+1

最新の答えを見て、最適だと思います。基本的には@thekbbは言う:あなたのリポジトリに派生成果物を保存しないでください。 – tomlogic

0

私は「はい」と言います。なぜなら、あなたのワークフローに開発者を追加したいのですが、.Lessをビルドする必要がない、あるいはビルドする必要がないからです。生成されたファイルだけにアクセスできるようにすると便利です。

+3

同じ引数を実行可能ファイルやDLLのような他のビルド成果物のコミットに使用できます。理論上、誰もが少なくとも同じツールチェーンをインストールし、すべての成果物を生成するビルドスクリプトを持っています。 – R0MANARMY

+0

@Scott - プロジェクトが使用されている場合は、プロジェクトの要件になります。 –

+0

@ R0MANARMY特に同じ議論ではありません。多くの一般的なVCS​​にはないバイナリデータを、バージョンコントロールで扱うかどうかが重要です。私はすべてのテキストデータを参照しています。 –

0

良い質問です。 @Scott Simpsonのコメントに従って、LESSが更新された後にCSSファイルが更新され、おそらくはいになることを絶対に保証できる場合は、私はこれが保証するのが難しいと思われます。新しい開発者が同期していない日にCSSのコピーを入手するとどうなりますか?また、もちろん、私はもともとこれを考えていなかったのですが、新しい開発者がCSSファイルをLESSよりも更新するとどうなりますか? CSSを構築しなければならず、アーカイブに含まれていなければ、問題はほとんど見えません。

+0

あなたは良い点を挙げていますが、考えられる不具合のリストとして*何が起こるかを言い換えると、おそらく答えとしてうまくいくでしょう。 – R0MANARMY

11

派生アーチファクトをチェックインすることは、ほとんどの場合、最適ではありません。

私は.cssにチェックインすることにしました。あなたの同輩か後継者の1人が.cssへの編集でチェックし、.lessではなくずっとチェックするまでそれは時間の問題です。その後、.lessを変更すると、以前の変更は失われます。

+1

最後の行で答えを導くことをお勧めします。答えが少し良くなるでしょう。 – R0MANARMY

+1

あなたは.cssをチェックインしないことを意味しますか? – R0MANARMY

+0

これは私が心配している1つの問題です。開発者はCSSを編集しますがLESSは編集せず、更新された(以前に生成された)CSSファイルをチェックインします。プリコミットフックはすべての変更を消去します。あなたのご意見ありがとうございます。 –

2

生成されたCSSファイルをバージョンコントロールに含めるかどうかを指定しますか?

実際には、私は通常、生成されたCSSファイルをチェックします。その理由は、gitを使用してデプロイメントを行うため、デプロイメントが簡単になるからです。私はサーバーにインストールされているコンパイラを少なくする必要はありません。通常、私が開発しているマシンでも(私が開発しているマシンとは対照的に)展開していません。これは、開発者とデプロイヤを別々にしている場合に便利ですが、展開している場合でも役立つことがあります。

  1. あなたはgit add --patchを使用することはできません(またはあなたが本当にそうするとき非常に注意する必要があります)
  2. あなたがた.cssを変更しないでください。

    は今、これを行うには欠点があります直接;代わりに、プライマリの.lessまたは.cssファイルを変更せずにマイナーな変更を行うには、通常、セカンダリの.cssファイルを使用します。また、無制限のファイルを直接コンパイルしたCSSにコンパイルして、生成されたCSSを変更することを躊躇させないようにすることもできます。

  3. 開発者は、自動再コンパイルツール(SimpLessまたはLess.appなど)を使用するようにマシンを設定する必要があります。したがって、.cssファイルは.lessファイルに保存するとすぐに更新されます。オートメーションがなければ、チェックサムの少ないファイルと一致しないCSSのリスクに晒されます。

それらのための生成されたバイナリはプラットフォーム固有であるため、しかし.Cおよび.Hファイルからコンパイルするとき、私は同じことをしないだろう、とも.less/.cssのファイルは通常、大規模のごく一部でありますWebプロジェクトのため、追加ファイルのスペースオーバーヘッドが小さくなります。

関連する問題