2016-06-21 9 views
1

cordovaプロジェクトのwww/フォルダにアセットが変更され、ネイティブコード/プラグインが変更されていない場合は、置き換えるだけのスクリプトは使用できません新しいwww/フォルダにiosビルド出力の既存のフォルダがありますか?Cordovaは既存のビルドにwwwフォルダをコピーします

私たちは小さな変更を加えてシミュレータで再実行するたびに、cordova build iosを使用してiosプロジェクト全体を再構築する必要はありません。これは、毎日素晴らしい時間を節約します。

既にこのようなことはありますか?

答えて

1

あなたはこれをアーカイブするには、3つの方法があります。

  1. はあなたのルート-WWW-フォルダから、ご使用のプラットフォーム-WWW-フォルダにすべてのファイルやフォルダの絶対シンボリックリンクを作成します。しかしwww-folder全体をシンボリックリンクせず、cordova.jsファイルをシンボリックリンクしないでください。

  2. Xcode - >ビルドフェーズでは、www - フォルダのすべてのファイルまたはフォルダに対して、コピーシェルスクリプトをコピーwwwディレクトリに置くことができます。それは次のようになります。 CP -R /absolute/path/to/your/app/www/index.html /absolute/path/to/your/app/platforms/ios/www/index.html

  3. フックを使用することができます。 hooks-> after_platform_add-> create_symlinks.jsとhooks-> after_build-> create_symlinks.jsに以下のフックを入れてください。アンドロイドまたはiosプラットフォームを追加するかアプリケーションをビルドするたびに、フックが実行されます。

スクリプトを実行可能にする必要があります。また、npmからshelljsをインストールする必要があります。ここで

は、あなたのニーズに合わせて変更し、私のフックです:

#!/usr/bin/env node 

var what_to_symlink_from_www = [ 
    "assets", 
    "index.html" 
]; 

// no need to change below 

var path = require("path"), 
    fs = require("fs"), 
    shell = require("shelljs"), 
    rootdir = process.argv[2], 
    added_platform = process.env.CORDOVA_PLATFORMS, 
    www = rootdir + "/www/", 
    android_www = rootdir + "/platforms/android/assets/www/", 
    ios_www = rootdir + "/platforms/ios/www/", 
    buildnumber_file = rootdir + "/buildnumber", 
    buildnumber, 
    active_platform_www; 

shell.echo("\r\nHook start: Symlinking"); 

if (added_platform === "ios") { 
    active_platform_www = ios_www; 
    do_job() 
} 
else if (added_platform === "android") { 
    active_platform_www = android_www; 
    do_job() 
} 

function do_job() { 
    what_to_symlink_from_www.forEach(function (item) { 
     shell.rm("-rf", active_platform_www + item); 
     shell.ln("-s", www + item, active_platform_www + item); 
     shell.echo("symlinked: " + item + " to " + active_platform_www); 
    }); 
    shell.echo("Hook end: Symlinking" + "\r\n"); 
} 
関連する問題