菜鸟教程小白 发表于 2022-12-12 20:50:42

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


                                            <p><p>如果我们只更改了 Cordova 项目的 <code>www/</code> 文件夹中的 Assets ,并且没有更改任何 native 代码/插件,那么是否应该有一个脚本用 ios 构建输出中的现有文件夹替换新的 <code>www/</code> 文件夹?</p>

<p>这样我们就不必每次想要做一个小改动并在模拟器中重新运行时都使用 <code>cordova build ios</code> 重新构建整个 ios 项目。这将为我们每天节省大量时间。</p>

<p>这样的东西已经存在了吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以通过三种方式存档:</p>

<ol>
<li><p>为从根 www 文件夹到平台 www 文件夹的每个文件或文件夹创建绝对符号链接(symbolic link)。但是不要对整个 www 文件夹进行符号链接(symbolic link),也不要对 cordova.js 文件进行符号链接(symbolic link)。</p></li>
<li><p>在 Xcode -> Build Phases 中,您可以为您的 www 文件夹中的每个文件或文件夹将 copy-shell-scripts 放在 Copy www 目录中。它应该看起来像:
cp -R/absolute/path/to/your/app/www/index.html/absolute/path/to/your/app/platforms/ios/www/index.html</p></li>
<li><p>你可以使用钩子(Hook)。将以下钩子(Hook)放入 hooks->after_platform_add->create_symlinks.js 和 hooks->after_build->create_symlinks.js 中。每次添加 android 或 ios 平台或构建应用程序时,钩子(Hook)都会运行。</p></li>
</ol>

<p>你必须使脚本可执行,也许你需要从 npm 安装 shelljs。</p>

<p>这是我的钩子(Hook),根据你的需要修改它:</p>

<pre><code>#!/usr/bin/env node

var what_to_symlink_from_www = [
    &#34;assets&#34;,
    &#34;index.html&#34;
];

// no need to change below

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

shell.echo(&#34;\r\nHook start: Symlinking&#34;);

if (added_platform === &#34;ios&#34;) {
    active_platform_www = ios_www;
    do_job()
}
else if (added_platform === &#34;android&#34;) {
    active_platform_www = android_www;
    do_job()
}

function do_job() {
    what_to_symlink_from_www.forEach(function (item) {
      shell.rm(&#34;-rf&#34;, active_platform_www + item);
      shell.ln(&#34;-s&#34;, www + item, active_platform_www + item);
      shell.echo(&#34;symlinked: &#34; + item + &#34; to &#34; + active_platform_www);
    });
    shell.echo(&#34;Hook end: Symlinking&#34; + &#34;\r\n&#34;);
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Cordova 将 www 文件夹复制到现有版本,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37950188/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37950188/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Cordova 将 www 文件夹复制到现有版本