1

短縮版

YUIコンプレッサーのようなファイルコンプレッサーを使用する場合、開発時に圧縮ファイルをいじる必要がないように、Webサイトを展開するための適切な手順は何ですか?リリースプロセスの一部として圧縮スクリプトが必要ですか?

ロングバージョン

JSファイルとCSSファイルにYUIコンプレッサーを使用するプロジェクトに参加しました。私には、非常に悪臭がするように思われるコードのチャンクに遭遇しました。これを行うためのより良い方法があるかどうか疑問に思います。

コードで作業している間、開発者は非圧縮ファイルを自由に操作でき、Webサイトを引き続き機能させ、変更を反映させる必要があると思います。次に、変更されたcssファイルとjsファイルをリリース時に圧縮できます。それはそれがここに行く方法ではありません。

基本的に、コアphpページでPHP_SAPIをチェックし、コマンドラインの場合はコンプレッサーを実行します。これは、execonを実行しgit log、次にいくつかのsed魔法を実行して現在のリビジョン番号(cssおよびjsファイルバージョンとして使用される)を取得しproc_open、yuicompressorを実行してファイルで実行し、さらに数exec秒で新しいファイルを追加します。 git ...そして、いくつかのブードゥーがphpファイル自体に到達し(はい、それは自己変更型です)、$version変数宣言を新しいリビジョン番号に変更します。この変数はinclude、cssファイルとjsファイルを修正するために使用されます。

私が最初にリポジトリからコードをチェックアウトしたとき、Webサイトはローカルで実行されていましたが、cssはありませんでした。同僚から、上記の呪文を呼び出すシェルスクリプトを実行する必要があると言われました。これが成功するまでに、ファイルのアクセス許可を微調整するのに約30分かかりました。

これは私が思うほど悪いにおいがしますか?どうすればこれを開発ステップとして取り除き、開発中に通常の非圧縮ファイルを含めることができるようになりますか?現在のところ、上記のファイルに変更を加えてすぐに表示することはできません。リリース時にそれを行うことの問題は、ファイルが圧縮されるときにインクルードを圧縮ファイルに変更する必要があることです。コードを変更するスクリプトも必要になるようです。何か案は?

4

1 に答える 1

1

おい:)私はこれであなたを助けることができます-私は(主に)YUI Compressorを.NETに移植しました..コードを展開するときに..公開サーバーがcssとjsを縮小/結合していることを確認する必要があったためです。.. これは、私のシナリオが .NET/TFS 固有のものであるにもかかわらず、どの言語/展開シナリオにも当てはまる可能性があります。

秘訣は、開発中にソース ファイルがまったく変更されないようにすることです。一度もない。css/js を縮小および/または結合する必要があるのは、独自の開発 (別名 Localhost) マシンから他のサーバー (つまり、Dev/Test/Uat/Live-Production) にコードをプッシュする場合のみです。

ローカルホストの開発マシンで作業しているときに、縮小および/または結合された css/js を操作するのは非常に困難です..特に、UI エクスペリエンスに取り組んでいる場合.. javascript/html/css を実行しています。

どうしようか?まず、展開ソリューションが必要です。.NET の場合、TFS を使用してコードをサーバーにデプロイします。しかし、他にもたくさんのオプションがあります..Ruby On Railsの覗き見はRakeを使用してそこにYUICompressorタスクを追加できると思います。

TFS では、継続的インテグレーションが進行しています。そのため、コードがチェックインされるたびに、システムは多かれ少なかれ次のことを行います (これがこの記事の要点です)。

..一時的な場所に...

  • 最新のコードを入手
  • 最新のコードをコンパイルする
  • 任意の js または css を縮小および/または結合します。これらの新しく作成されたファイルは、コードがコンパイルされた一時的な場所に移動します。
  • この一時的な場所から目的の Web サーバー (dev/test/uat/prod.. など) にこのコード/Web サイトを公開します。

そのリストで重要なのは、これらすべてが一時的な場所で発生しているという事実です。現在の開発フォルダーではありません。メインのソース ファイルを台無しにしたくありません。

それで教えて頂ければ

  • コードが保存されている場所 (ソース コード)。あなたはGITと言ったと思いますか?
  • どの言語 (php?)
  • そして最も重要なのは、ソース管理からライブ サーバーにコードを取得する方法です。
于 2010-09-24T11:27:00.833 に答える