Zwykle w Gulp zadania wyglądają tak:
gulp.task('my-task', function() {
return gulp.src(options.SCSS_SOURCE)
.pipe(sass({style:'nested'}))
.pipe(autoprefixer('last 10 version'))
.pipe(concat('style.css'))
.pipe(gulp.dest(options.SCSS_DEST));
});
Czy można przekazać flagę wiersza poleceń do przełykania (to nie jest zadanie) i pozwolić, aby uruchamiała zadania warunkowo na tej podstawie? Na przykład
$ gulp my-task -a 1
A potem w moim gulpfile.js:
gulp.task('my-task', function() {
if (a == 1) {
var source = options.SCSS_SOURCE;
} else {
var source = options.OTHER_SOURCE;
}
return gulp.src(source)
.pipe(sass({style:'nested'}))
.pipe(autoprefixer('last 10 version'))
.pipe(concat('style.css'))
.pipe(gulp.dest(options.SCSS_DEST));
});
javascript
node.js
gulp
asolberg
źródło
źródło
process.argv
aby uzyskać dostęp do argumentów wiersza poleceń.Odpowiedzi:
Gulp nie oferuje do tego żadnego zastosowania, ale możesz użyć jednego z wielu parserów argumentów poleceń. Lubię
yargs
. Powinien być:Możesz go również połączyć z
gulp-if
warunkowym potokiem strumienia, co jest bardzo przydatne w tworzeniu i tworzeniu aplikacji:I zadzwoń za pomocą
gulp my-js-task
lubgulp my-js-task --production
.źródło
npm run gulp
, powinieneś używać go jaknpm run gulp -- --production
.Edytować
gulp-util
jest przestarzałe i należy go unikać, dlatego zaleca się stosowanie zamiast tego minimalistycznego , którygulp-util
już był używany.Więc zmieniłem niektóre linie w moim pliku gulp, aby usunąć
gulp-util
:Oryginalny
W moim projekcie używam następującej flagi:
Gulp oferuje do tego obiekt
gulp.env
. Jest to przestarzałe w nowszych wersjach, więc musisz do tego użyć gulp-util. Zadania wyglądają następująco:Ustawienie środowiska jest dostępne podczas wszystkich podzadań. Więc mogę użyć tej flagi również w zadaniu obserwacyjnym:
I moje zadanie stylów też działa.
Ciao Ralf
źródło
gulp.env
jest przestarzałe , co widać po komunikacie dziennika konsoli podczas jego uruchamiania. Proszą o użycie własnego parsera i sugerująyargs
lubminimist
.util.env.theme ? util.env.theme : 'main'
doutil.env.theme || 'main'
. W każdym razie +1.gulp-util
wykorzystujeminimist
bibliotekę do analizy argumentów wiersza poleceń. Więc jeśli używaszgulp-util
, nie potrzebujesz dodatkowej biblioteki do tego celu. Dokument: github.com/substack/minimistOto szybki przepis, który znalazłem:
gulpfile.js
CLI
Oryginalny numer referencyjny (już niedostępny): https://github.com/gulpjs/gulp/blob/master/docs/recipes/pass-params-from-cli.md
Alternatywa z minimalistą
Zaktualizowany Ref: https://github.com/gulpjs/gulp/blob/master/docs/recipes/pass-arguments-from-cli.md
gulpfile.js
CLI
źródło
Istnieje bardzo prosty sposób na tworzenie
on/off
flag bez analizowania argumentów.gulpfile.js
to tylko plik, który jest wykonywany jak każdy inny, więc możesz:I użyj czegoś takiego,
gulp-if
aby warunkowo wykonać krokWykonanie
gulp build
wygeneruje niezły html, a jednocześniegulp production build
go zminimalizuje.źródło
gulp.task('mytask', function() { if (flags.myflag ) { flaggedtask } else { unflaggedask } });
flags
.Jeśli masz jakieś ścisłe (uporządkowane!) Argumenty, możesz je po prostu sprawdzić
process.argv
.Wykonaj to:
gulp --env production
... Jednak myślę, że to jest za dlugich surowe i nie kuloodporne! Więc trochę się bawiłem ... i skończyłem z tą funkcją narzędzia:
Zjada nazwę argumentu i wyszuka to w
process.argv
. Jeśli nic nie znaleziono, wypluwa sięnull
. W przeciwnym razie, jeśli nie jest to kolejny argument lub następny argument jest poleceniem, a nie wartością (różni się myślnikiem),true
zostanie zwrócony. (Jest tak, ponieważ klucz istnieje, ale po prostu nie ma wartości). Jeśli wszystkie poprzednie przypadki zakończą się niepowodzeniem, otrzymamy następny argument-wartość.> gulp watch --foo --bar 1337 -boom "Foo isn't equal to bar."
Ok, na razie wystarczy ... Oto prosty przykład użycia gulp :
Uruchom
gulp --env production
źródło
if (args[0] === '--env' && args[1] === 'production');
Zbudowałem wtyczkę do wstrzykiwania parametrów z wiersza polecenia do wywołania zwrotnego zadania.
https://github.com/stoeffel/gulp-param
Jeśli ktoś znajdzie błąd lub poprawi go, z przyjemnością scalę PR.
źródło
A jeśli używasz maszynopisu (
gulpfile.ts
), zrób toyargs
(w oparciu o doskonałą odpowiedź @Caio Cunha https://stackoverflow.com/a/23038290/1019307 i inne komentarze powyżej):zainstalować
.ts
aktaDodaj to do plików .ts:
Należy to zrobić w każdym pliku .ts osobno (nawet w pliku
tools/tasks/project
pliki importowane dogulpfile.ts/js
).Biegać
Lub pod
npm
przekazać arg, aby przełknąć:źródło
Przekaż argumenty z wiersza poleceń
Następnie uruchom łyk za pomocą:
Źródło
źródło
Interfejs CLI
gulp production
wywołuje moje zadanie produkcyjne i ustawia flagę dla wszystkich warunków warunkowych.źródło
Chcieliśmy przekazać inny plik konfiguracyjny dla różnych środowisk - jeden dla produkcji , dev i testowania . To jest kod w pliku gulp:
To jest kod w pliku app.js:
A potem przełknąć
--env=testing
źródło
Minęło trochę czasu, odkąd to pytanie zostało opublikowane, ale może komuś pomoże.
Korzystam z GULP CLI 2.0.1 (instalowany globalnie), a GULP 4.0.0 (instalowany lokalnie) oto jak to zrobić bez dodatkowej wtyczki. Myślę, że kod jest dość zrozumiały.
I uruchom z konsoli:
Następnie uruchom i zobacz różnice:
źródło