Tôi đang cố gắng điều kiện một luồng tệp dựa trên giá trị của một biến, như một cách để xác định hai môi trường xây dựng riêng biệt (ví dụ: phát triển và sản xuất).Có thể gán một biến trong tác vụ gulp trước khi chạy các phụ thuộc không?
Một số nhiệm vụ có thể chạy độc lập với một lá cờ dòng lệnh như sau: gulp scripts --env production
Và sau đó sẽ thực hiện một số bước đường ống dẫn sản xuất chỉ:
gulp.task('scripts', function() {
var jsFilter = filter(['*.js']),
appFiles;
return gulp.src(appFiles)
.pipe(jsFilter)
.pipe(concat('application-build.js'))
.pipe(gulpif(env === 'production', uglify()))
.pipe(size())
.pipe(gulpif(env === 'production', gulp.dest('dist/js'), gulp.dest('tmp/js')))
.pipe(browserSync.reload({ stream: true }));
});
Tôi có một nhiệm vụ build
mà các cuộc gọi một số nhiệm vụ khác làm phụ thuộc (ví dụ như tác vụ scripts
). Tôi muốn nhiệm vụ build
này chỉ định một biến (env
, trong trường hợp này) trước phụ thuộc nhiệm vụ đang chạy. Điều này có nghĩa là:
gulp.task('build', ['scripts', 'styles', 'otherstuff'], function() {
env = 'production';
}
không hoạt động, vì phụ thuộc được chạy trước phần thân của tác vụ.
Tôi hiện đang có nó thực hiện với gulp.start
:
gulp.task('build', function() {
env = 'production';
gulp.start('scripts');
});
But the .start
method isn't actually part of gulp's public API - nó comes from Orchestrator - và không có ý định sẽ được sử dụng cho bất cứ điều gì. Ngoài ra, phương pháp tương đương gulp.run
đã không được chấp nhận từ API một thời gian trước đây.
Vì vậy, tôi tự hỏi - liệu có cách nào khác tôi có thể gán một biến trong một tác vụ trước khi chạy các phụ thuộc của nó không?
(Hoặc có thể có một cách tốt hơn để thực hiện một cái gì đó giống như môi trường xây dựng trong ngụm?)
Cảm ơn! Tôi thích cách tiếp cận này tốt hơn rất nhiều. Câu hỏi nhanh - (Tôi biết điều này được sử dụng trong tài liệu 'run-sequence' nhưng) tại sao lại có một cuộc gọi lại ở cuối? – wisew
Vì nhiệm vụ gulp là không đồng bộ, cuộc gọi lại cho phép gulp biết nhiệm vụ được thực hiện. Điều đó là cần thiết nếu nhiệm vụ được khai báo là sự phụ thuộc của một nhiệm vụ khác. –
Chúng ta có cần nhiệm vụ 'set-production' không, chúng ta có thể đặt biến' env' trực tiếp trước khi chúng ta chạy chuỗi không? –