Cordova将www文件夹复制到现有版本

时间:2016-06-21 16:46:36

标签: ios cordova ios-simulator cordova-plugins

如果我们只更改了cordova项目的www/文件夹中的资产,并且没有更改任何本机代码/插件,那么就不可能有一个脚本可以替换新的www/文件夹与ios构建输出中的现有文件夹一起?

这样,每当我们想要进行小的更改并在模拟器中重新运行时,我们就不必使用cordova build ios重新构建整个ios项目。这样每天可以节省很多时间。

这样的事情是否存在?

2 个答案:

答案 0 :(得分:2)

您可以通过三种方式对此进行归档:

  1. 为root-www-folder到platform-www-folder的每个文件或文件夹创建绝对符号链接。但是不要对整个www文件夹进行符号链接,也不要对cordova.js文件进行符号链接。

  2. 在Xcode中 - > Build Phases你可以将copy-shell-scripts放在你的www文件夹的每个文件或文件夹的Copy 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中。每次添加android或ios平台或构建应用程序时,钩子都会运行。

  4. 你必须让脚本可执行,也许你需要从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");
    }
    

答案 1 :(得分:0)