Gulpを使用してCordova開発/展開チェーンをセットアップしようとしています。私はこのgulpfile.jsで終わったが、 "gulp deploy"タスクを実行するために "gulp watch"タスクをkillする必要があるので、私は本当に満足していない。Cordova/Gulpベストプラクティス
var gulp = require('gulp'),
gutil = require('gulp-util'),
exec = require('gulp-exec');
var spawn = require('child_process').spawn;
var stripDebug = require('gulp-strip-debug');
var uglify = require('gulp-uglify');
/**
* Config ogj
*/
var config = {
jsDir: 'www/assets/js',
jsDirBrowser: 'platforms/browser/www/assets/js',
production: !!gutil.env.production
};
/**
* Automatically run 'cordova prepare browser' after any modification
* into the www directory - really useful for development/deplyment purpose
*
* @see watch task
*/
gulp.task('prepare', function() {
gutil.log('Prepare browser');
var options = {
continueOnError: false, // default = false, true means don't emit error event
pipeStdout: false, // default = false, true means stdout is written to file.contents
customTemplatingThing: "test" // content passed to gutil.template()
};
var reportOptions = {
err: true, // default = true, false means don't write err
stderr: true, // default = true, false means don't write stderr
stdout: true // default = true, false means don't write stdout
}
return gulp.src('./**/**')
.pipe(exec('cordova prepare browser', options))
.pipe(exec.reporter(reportOptions));
});
/**
* Watch for changes in www
*/
gulp.task('watch', function() {
gulp.watch('www/**/*', ['prepare']);
});
/**
* Default task
*/
gulp.task('default', ['prepare']);
/**
* Javascript production depolyment.
*/
gulp.task('deploy-js', function() {
gutil.log('Deploy');
return gulp.src(config.jsDir + '/*.js')
.pipe(stripDebug())
.pipe(uglify())
.pipe(gulp.dest(config.jsDirBrowser));
});
/**
* Production deployment
* To be run before uploading files to the server with no gulp instaces running
*/
gulp.task('deploy', ['deploy-js']);
これはGulpを使用してCordovaプロジェクトを開発し、拒否するためのベストプラクティスですか?
[編集] 私はこの問題が「準備」タスクにあると思います。おそらく、gulp-execの問題が原因で返されることはありませんが、実際にデバッグする方法はわかりません。
あなたは何をしようとしていますか? 'watch'はコントロールをあなたに返しません。ファイルが変更されるたびに展開をトリガーしますか? –
ファイルを変更するたびに「準備」をトリガーし、サーバー、apkまたはipaにプッシュする準備ができたら手動で「デプロイ」をトリガーします。実際には、もしgulp watchが実行されているときに "gulp deploy"を実行すると、何もしません。おそらく "準備"がjs minifiedファイルを突然上書きするからです。 – g4b0
これはたぶん理由があるでしょう。異なるタスクに別々の宛先を使用してみてください。また、デプロイメントタスクの宛先フォルダ内の変更がprepare - この行 - > 'gulp.watch( 'www/*' '/ * '、[' prepare']); ' –