在&cordova建立xxx'之前吞下了钩子。

时间:2015-02-03 20:43:25

标签: cordova gulp cordova-cli

我的gulpfile.js有一些任务,我想在执行cordova build时执行一项任务

我在before_build文件夹中创建了一个hooks文件夹,在js文件中只有一个简单的console.log("a")

但是,当我运行cordova build android时,它说'console' is undefined,我还要做其他事情来运行Javascript吗?我找不到更多信息。

谢谢!

编辑:

我在.js文件的顶部添加了#!/usr/bin/env nodeconsole.log正常工作,但现在我想要gulp myTask并向我投掷gulp is not defined

3 个答案:

答案 0 :(得分:8)

您可以通过将此代码粘贴到文件before_build/010_compile_css.js

中而无需离开Node来运行它
#!/usr/bin/env node

var gulp = require('gulp');
var path  = require('path');

var rootdir = process.argv[2];
var gulpfile = path.join(rootdir, 'gulpfile.js');

process.stdout.write('Compiling SCSS');

require(gulpfile);

//interaction
gulp.start('scss');

答案 1 :(得分:5)

我发现我必须使用__dirname来要求'gulpfile.js'文件。

#!/usr/bin/env node

module.exports = function(context) {
  var Q = context.requireCordovaModule('q');
  var deferral = new Q.defer();

  var path = require('path'),
      gulp = require('gulp'),
      gulpfile = path.join(__dirname, 'gulpfile');
  require(gulpfile);

  gulp.start('myTask').once('task_stop', function(){
      console.log('myTask done');
      deferral.resolve();
  });

  return deferral.promise;
}

注意:'gulpfile.js'和'hook.js'在这里的目录中。您可以在Cordova的 config.xml 文件中设置钩子js文件的自定义路径:

<hook type="before_build" src="app/hook.js" />

答案 2 :(得分:3)

最后我可以运行命令,这是hooks/before_build

中的我的.js文件
#!/usr/bin/env node
var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("gulp", puts);