我的gulpfile.js
有一些任务,我想在执行cordova build
时执行一项任务
我在before_build
文件夹中创建了一个hooks
文件夹,在js文件中只有一个简单的console.log("a")
。
但是,当我运行cordova build android
时,它说'console' is undefined
,我还要做其他事情来运行Javascript吗?我找不到更多信息。
谢谢!
编辑:
我在.js文件的顶部添加了#!/usr/bin/env node
,console.log
正常工作,但现在我想要gulp myTask
并向我投掷gulp is not defined
答案 0 :(得分:8)
您可以通过将此代码粘贴到文件before_build/010_compile_css.js
:
#!/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
#!/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);