【发布时间】:2016-02-05 07:34:42
【问题描述】:
我正在使用:
科尔多瓦 5.3.3
Xcode 6.2
使用 Cordova 教程: https://ccoenraets.github.io/cordova-tutorial/
修改 index.html 运行 cordova build ios ios 平台目录中的 www 目录未更新。
当我更新根目录中的文件时,cordova prepare 和 cordova prepare ios 也不会更新 ios 的 www 目录。
我搜索并找到了这个解决方案:
引用了哪些
找到名为 copy-www-build-step.sh 的文件。 我的在 [project_folder]/platforms/ios/cordova/lib/copy-www-build-step.sh
但是,在我的安装中,我有一个 javascript 文件,而不是 shell 脚本 - 版本可能
[project_folder]/platforms/ios/cordova/lib/copy-www-build-step.js
在那个文件中:
var BUILT_PRODUCTS_DIR = process.env.BUILT_PRODUCTS_DIR,
FULL_PRODUCT_NAME = process.env.FULL_PRODUCT_NAME,
COPY_HIDDEN = process.env.COPY_HIDDEN,
PROJECT_FILE_PATH = process.env.PROJECT_FILE_PATH;
var path = require('path'),
fs = require('fs'),
shell = require('shelljs'),
glob = require('glob'),
srcDir = 'www',
dstDir = path.join(BUILT_PRODUCTS_DIR, FULL_PRODUCT_NAME),
dstWwwDir = path.join(dstDir, 'www');
if(!BUILT_PRODUCTS_DIR) {
console.error('The script is meant to be run as an Xcode build step and relies on env variables set by Xcode.');
process.exit(1);
}
try {
fs.statSync(srcDir);
} catch (e) {
console.error('Path does not exist: ' + srcDir);
process.exit(1);
}
// Code signing files must be removed or else there are
// resource signing errors.
shell.rm('-rf', dstWwwDir);
shell.rm('-rf', path.join(dstDir, '_CodeSignature'));
shell.rm('-rf', path.join(dstDir, 'PkgInfo'));
shell.rm('-rf', path.join(dstDir, 'embedded.mobileprovision'));
// Copy www dir recursively
if(!!COPY_HIDDEN) {
shell.mkdir('-p', dstWwwDir);
shell.cp('-r', glob.sync(srcDir + '/**', { dot: true }), dstWwwDir);
} else {
shell.cp('-r', srcDir, dstDir);
}
// Copy the config.xml file.
shell.cp('-f', path.join(path.dirname(PROJECT_FILE_PATH), path.basename(PROJECT_FILE_PATH, '.xcodeproj'), 'config.xml'),
dstDir);
所以看起来shell.cp('-r', srcDir, dstDir); 应该在这里进行复制工作。但是副本在我的实例中不起作用。
【问题讨论】:
-
您使用的是节点 5 吗? tha 版本和 cordova 存在一些问题
-
是的,5.0.0。谢谢你的提示。我会看看降级的。
-
Cordova 5.4.0 已发布并修复了节点 5 的问题
-
哈哈,就像我让节点 4.2.2 工作一样。感谢您的提示,这确实是问题所在。
标签: javascript ios xcode cordova