工作目录不是Grunt基于Cordova的项目

时间:2014-08-01 03:46:02

标签: cordova gruntjs

我有一个通过Grunt构建的网络应用程序。现在,我想使用PhoneGap / Cordova将该应用程序捆绑为我的构建过程的一部分。为了做到这一点,我已经包含了grunt-cordovacli模块并且有一个名为“deploy”的目标。部署设置如下:

grunt.registerTask('deploy', [
  'build',
  'cordovacli:add_platforms',
  'cordovacli:add_plugins', 
  'cordovacli:prepare_ios',
  'cordovacli:prepare_android', 
  'cordovacli:prepare_windows',
  'cordovacli:build_ios',
  'cordovacli:build_android',
  'cordovacli:build_windows'
]);

我已通过在浏览器中加载内容来确认构建工作。我的cordovacli任务配置如下:

module.exports = function(config) {
  return {
    options: {
      path: '/distribute'
    },
    cordova: {
      options: {
        command: ['prepare', 'create','platform','plugin','build'],
        platforms: ['ios','android', 'wp8'],
        plugins: ['device','dialogs'],
        path: '/distribute',
        id: 'myco.myapp',
        name: 'myapp'
      }
    }
    add_platforms: {
      options: {
        command: 'platform',
        action: 'add',
        platforms: ['ios', 'android', 'wp8']
      }
    },
    add_plugins: {
      options: {
        command: 'plugin',
        action: 'add',
        plugins: [
          'battery-status',
          'camera',
          'contacts',
          'splashscreen'
        ]
      }
    },
    build_ios: {
      options: {
        command: 'build',
        platforms: ['ios']
      }
    },
    build_android: {
      options: {
        command: 'build',
        platforms: ['android']
      }
    },
    build_windows: {
      options: {
        command: 'build',
        platforms: ['wp8']
      }
    },
    prepare_ios: {
      options: {
        command: 'prepare',
        platforms: ['ios']
      }
    },
    prepare_android: {
      options: {
        command: 'prepare',
        platforms: ['android']
      }
    }
  };
};

当我运行部署时,一切都会运行,直到cordova的东西。那时,我得到以下内容:

Running "cordovacli:add_platforms" (cordovacli) task
Using cordova CLI version (3.5.0-0.2.6)
Setting Current Working Directory (CWD) to distribute
Running:node C:\Projects\myapp\node_modules\grunt-cordovacli\node_modules\cordova\bin\cordova platform add ios
Running:node C:\Projects\myapp\node_modules\grunt-cordovacli\node_modules\cordova\bin\cordova platform add android
Running:node C:\Projects\myapp\node_modules\grunt-cordovacli\node_modules\cordova\bin\cordova platform add wp8
Current working directory is not a Cordova-based project.
>> Error
Error-> with Parallel tasksError

这有什么问题?我做错了什么?

1 个答案:

答案 0 :(得分:0)

看起来您没有运行初始create cordovacli任务,因此该项目不存在,因此无法添加平台。

Cordova知道您尚未创建应用,因为config.xml路径中不存在/distribute

另外,请确保config.xmlgrunfile.js位于同一目录中,否则由于某种原因,平台会在此处添加,而不是在指定的/distribute路径中添加。我被困了一段时间才解决这个问题。