目前在使用cordova做APP项目,包括Android及iOS的APP开发,后来发现一个问题,在使用cordova clean命令时,命令行报错,大概意思就是/platforms/ios/build文件夹不是系统创建的,这个文件夹是用来存放iOS打包构建产物的,可以删除,所以事情就简单了,只要每次执行cordova clean命令时手动删除这个命令就可以了。
但是!如果能自动完成,何必要手动去删除呢。
所以,它来了!
那么就可以通过hooks去解决这件事儿
<hook type="before_clean" src="scripts/beforeClean.js"></hook>
在config.xml中添加上面这段代码,并在scripts文件夹里新建一个beforeClean.js文件,里面写上逻辑就好了。
module.exports = function () {
return new Promise((resolve, reject) => {
const sign = require('shelljs').rm('-rf', './platforms/ios/build')
sign.code === 0 ? resolve(true) : reject('iOS清理失败,需要手动删除./platforms/ios/build目录')
})
}
通过shell.js执行本机的rm命令删除这个/platforms/ios/build
文件夹,当然也可以使用child_process
去执行。
这样的话,就会在执行cordova clean命令前自动去先执行删除文件夹操作,然后再执行cordova clean命令,搞定!