解决cordova clean报错

180 阅读1分钟

目前在使用cordova做APP项目,包括Android及iOS的APP开发,后来发现一个问题,在使用cordova clean命令时,命令行报错,大概意思就是/platforms/ios/build文件夹不是系统创建的,这个文件夹是用来存放iOS打包构建产物的,可以删除,所以事情就简单了,只要每次执行cordova clean命令时手动删除这个命令就可以了。

但是!如果能自动完成,何必要手动去删除呢。

所以,它来了!

image.png

那么就可以通过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命令,搞定!