2011-08-05 10 views
0

ビル煎茶タッチアプリは

いただきました最善の方法に...あなたはビュー、コントローラ、モデル、店舗、Utilsのなどの束と(符号化)あなたのMVC煎茶タッチアプリケーションを構築していると仮定しますプロダクション用のアプリケーションを「ビルド」しますか?

タスクは次のようになります。

  • 、連結方式と
  • すべてのJSのソースファイルを縮小化、連結方式と縮小化スタイルシート(基本的に本番環境とコンパスを実行している)
  • 必要ないフォルダ

を削除持っています誰もJSBuilderまたはApache Antでこれをやっていますか? Sencha Touchのlibに統合されたJSBuilderソリューションはかなりバグがあり、文書化されていません。 Apache Antは、Jenkinsのような "より大きな"ビルドシステムやCIシステムに完全に適合しますが、Sencha Touchアプリケーションでこれを実現する方法の良い例がありません。

Sencha Touchのビルドスクリプトはどのように見えるのですか?

答えて

2

編集:警告:これは古い回答ですが、これを行うにはより良い方法があります。 JavaScriptの最新のビルドツールは、2011年以来ずっと進んでいます。

私は実際にこれを今日実際に行いました。

私はスクリプトの依存関係を定義するc/C++インクルードスタイルが好きだったので、まずはsprocksterを使うと考えました。

私のチームメンバーの中にはルビーが幾分恐れているので、私はApache antを使用してしまいました。 Apache Antは、より普遍的な、よく文書化されたツールのようにも見えました。

私はsassファイルを自動的に作成する方法をまだ考えていませんが、それほど難しいことではありません。

  1. CONCATENATEすべてのjsファイルと
  2. 縮小化はすべてのビルドフォルダ内のファイルをJS、それらの名前を変更*は
  3. を-min.jsビルドフォルダに置く:

    私が使用するプロセスは、一種の簡単です

  4. コピー(画像、煎茶-touch.js、インデックスファイルなどを含む)distのフォルダに必要なすべてのファイルが

これは私がになってしまったものです。

<project name="ProjectApp" default="dist" basedir="."> 
    <description> 
     Project Manager build file 
     dist-debug is the target that's best for debugging 
     Run ant dist-debug to build the project 
    </description> 
    <!-- set global properties for this build --> 
    <property name="src" location="src"/> 
    <property name="lib" location="lib"/> 
    <property name="build" location="build"/> 
    <property name="dist" location="dist"/> 
    <property name="utils" location="utils"/> 
    <property name="img" location="img"/> 

    <target name="init"> 
     <!-- Create the build directory structure used by compile --> 
     <mkdir dir="${build}"/> 
    </target> 

    <target name="concatenate" depends="init" description="Concatenate all js files"> 
     <concat destfile="${build}/application.js" fixlastline="yes"> 
      <fileset file="${src}/js/app.js" /> 
      <fileset file="${src}/js/observablize.js" /> 
      <fileset file="${src}/js/config.js" /> 

      <!-- Models --> 
      <fileset file="${src}/js/models/Project.js" /> 
      <fileset file="${src}/js/models/ProjectInformation.js" /> 
      <fileset file="${src}/js/models/Picture.js" /> 
      <fileset file="${src}/js/models/Milestone.js" /> 
      <fileset file="${src}/js/models/Risk.js" /> 
      <fileset file="${src}/js/models/data.js" /> 
      <fileset file="${src}/js/models/Invoice.js" /> 
      <fileset file="${src}/js/models/Customer.js" /> 
      <fileset file="${src}/js/models/OpenItem.js" /> 
      <fileset file="${src}/js/models/favorites.js" /> 
      <fileset file="${src}/js/models/mockObjects.js" /> 

      <!-- Database --> 
      <fileset file="${src}/js/database/createTables.js" /> 
      <fileset file="${src}/js/database/database.js" /> 
      <fileset file="${src}/js/database/projectObserver.js" /> 

      <!-- Network --> 
      <fileset file="${src}/js/network/network.js" /> 
      <fileset file="${src}/js/network/queries.js" /> 
      <fileset file="${src}/js/network/parseProjectServiceProject.js" /> 
      <fileset file="${src}/js/network/parseQueryEngineProjects.js" /> 
      <fileset file="${src}/js/network/parseDocArchiveSearchResponse.js" /> 
      <fileset file="${src}/js/network/parseDocArchiveDataResponse.js" /> 
      <fileset file="${src}/js/network/parseQueryEngineInvoices.js" /> 
      <fileset file="${src}/js/network/parseQueryEngineCustomer.js" /> 

      <!-- Views --> 
      <fileset file="${src}/js/views/Viewport.js" /> 
      <fileset file="${src}/js/views/XTemplates.js" /> 
      <fileset file="${src}/js/views/Login.js" /> 
      <fileset file="${src}/js/views/ProjectList/ActionSheet.js" /> 
      <fileset file="${src}/js/views/ProjectList/ProjectView.js" /> 
      <fileset file="${src}/js/views/ProjectList/ProjectList.js" /> 
      <fileset file="${src}/js/views/ProjectList/ProjectsLists.js" /> 
      <fileset file="${src}/js/views/ProjectInfo.js" /> 
      <fileset file="${src}/js/views/ProjectRisks.js" /> 
      <fileset file="${src}/js/views/ProjectMilestones.js" /> 
      <fileset file="${src}/js/views/ProjectDetail.js" /> 
      <fileset file="${src}/js/views/Overlays.js" /> 

      <!-- Controllers --> 
      <fileset file="${src}/js/controllers/login.js" /> 
      <fileset file="${src}/js/controllers/projects.js" /> 
     </concat> 
    </target> 

    <target name="compress" depends="concatenate" description="Compress application.js to application-min.js"> 
     <apply executable="java" parallel="false"> 
      <filelist dir="${build}" files="application.js" /> 
      <arg line="-jar" /> 
      <arg path="${utils}/yuicompressor-2.4.6.jar" /> 
      <srcfile /> 
      <arg line="-o" /> 
      <mapper type="glob" from="*.js" to="${build}/*-min.js" /> 
      <targetfile /> 
     </apply> 
    </target> 

    <target name="dist-debug" depends="concatenate" description="generate the distribution"> 
     <!-- Create the distribution directory --> 
     <mkdir dir="${dist}"/> 

     <!-- copy over the required files --> 

     <!-- required libraries --> 
     <!-- sencha touch --> 
     <copy file="${lib}/sencha-touch/sencha-touch.js" todir="${dist}"/> 

     <!-- stylesheet --> 
     <copy file="${build}/application.css" todir="${dist}"/> 

     <!-- index file --> 
     <copy file="${src}/index.html" todir="${dist}"/> 

     <!-- manifest file --> 
     <copy file="${src}/cache.manifest" todir="${dist}"/> 

     <!-- app javascript --> 
     <copy file="${build}/application.js" tofile="${dist}/application.js"/> 

     <!-- images --> 
     <copy file="${img}/icon.png" todir="${dist}"/> 
     <copy file="${img}/startup.png" todir="${dist}"/> 
     <copy file="${img}/disclosure.png" todir="${dist}"/> 

    </target> 

    <target name="dist" depends="dist-debug,compress" description="generate minified distribution"> 
     <!-- app javascript --> 
     <copy file="${build}/application-min.js" tofile="${dist}/application.js"/> 
    </target> 

    <target name="clean" description="clean up" > 
     <!-- Delete the ${build} and ${dist} directory trees --> 
     <delete dir="${build}"/> 
     <delete dir="${dist}"/> 
    </target> 

</project> 

ご覧のとおり、プロジェクト内のすべてのファイルを指定しています。これは注文を正しく取得することです。あなたのコードが私のものよりも良く書かれていて、依存関係がない場合は、ソースフォルダ全体を含めることができます。

+0

クリーンなソリューションのように見える、ありがとう!今、index.htmlを解析して必要なすべてのファイルを期待通りの順序で取得することが可能かどうか疑問です。これにより、ファイルパスをbuild.xmlに再度書き込むことが回避されます。または、フォルダ内のすべてのJSファイルを選択するだけです。 – fbrandel

+0

私は何時間もグーグルのようなことをしていました。私はそれを行ういくつかのオンラインツールを見つけましたが、どこを覚えていません。 私は最高の解決策は、テスト時にプロジェクトを構築することだと思う、私は 'コンパスの時計があるのだろうかと思う。 antと同等で、jsファイルの変更を検出するたびにビルドを行います。最初は、単純な検索とテキストエディタでの置き換えによって、build.xmlのファイルセットを作成することができます – bobbaluba

関連する問題