Gulp 在 'cordova build xxx' 之前挂钩
Gulp hook before 'cordova build xxx'
我的 gulpfile.js
有一些任务,我想在执行 cordova build
时执行一个任务
我在 hooks
文件夹中创建了一个 before_build
文件夹,其中包含一个简单的 console.log("a")
in js 文件。
但是当我 运行 例如 cordova build android
它说 'console' is undefined
时,我必须做一些其他事情才能 运行 Javascript?我找不到更多信息。
谢谢!
编辑:
我在 .js 文件的顶部添加了 #!/usr/bin/env node
并且 console.log
有效,但现在我想做 gulp myTask
并向我抛出 gulp is not defined
我终于可以 运行 命令了,这里是我的 .js 文件 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);
您可以 运行 通过将此代码粘贴到文件 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');
我发现我必须使用 __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" />
我的 gulpfile.js
有一些任务,我想在执行 cordova build
我在 hooks
文件夹中创建了一个 before_build
文件夹,其中包含一个简单的 console.log("a")
in js 文件。
但是当我 运行 例如 cordova build android
它说 'console' is undefined
时,我必须做一些其他事情才能 运行 Javascript?我找不到更多信息。
谢谢!
编辑:
我在 .js 文件的顶部添加了 #!/usr/bin/env node
并且 console.log
有效,但现在我想做 gulp myTask
并向我抛出 gulp is not defined
我终于可以 运行 命令了,这里是我的 .js 文件 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);
您可以 运行 通过将此代码粘贴到文件 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');
我发现我必须使用 __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" />