Zoptymalizuj swoje kompilacje za pomocą Gulp, Browserify i Watchify
Agencja internetowa » Wiadomości cyfrowe » Zoptymalizuj swoje kompilacje za pomocą Gulp, Browserify i Watchify

Zoptymalizuj swoje kompilacje za pomocą Gulp, Browserify i Watchify

Przeglądarka staje się coraz bardziej opłacalnym rozwiązaniem do tworzenia skryptów JS i zaproponowanie składni wzorowanej na składni node.js. Skompiluj skrypty z Przeglądarka Jest proste. Podczas rozwoju, korzystanie z Obserwuj pozwala na kompilację plików w locie. Mimo to, jeśli chcesz zintegrować swoją kompilację z innymi zadaniami Łykać (jak kompilowanie plików Mniej), napotkasz problem: jak używać czuwać w tym samym czasie co łyk-zegarek. Odpowiedź w tym artykule!

Użyj Gulp i Browserify – poziom 0

stosowanie Łykać et Przeglądarka jest całkiem proste. Możesz użyć API Browserify lub uprościć i użyć gulp-browserify, co pozwoli ci łatwo skompilować pliki.

1
2
3
4
5
6
7
8
const łyk = wymagać('łyk');
const przeglądaj = wymagać(„przełykaj-przeglądaj”);
łyk.zadanie('js', funkcjonować() {
łyk.src('źródło/*.js', { czytać: fałszywy })
.pipe(przeglądaj())
.pipe(przełknij.dest('./zbudować/'))
});

Problem, który szybko napotykasz, polega na tym, że aby pracować nad plikami i ponownie je skompilować w locie, będziesz musiał przeanalizować wszystkie pliki. To jest bardzo drogie. Przeglądarka będzie musiał załadować wszystkie twoje pliki, ale także wszystkie zależności, których używasz. Im większy będzie Twój projekt, tym szybciej upłynie czas. Dodatkowo, jeśli używasz transformacje comme Babelify czasy będą puchnąć jeszcze szybciej (Lista wszystkich wtyczek dostępnych przez Babel). Również lista wszystkich Przeglądaj przekształcenia.

Zanim pokażę ostateczne rozwiązanie, oto jak wyglądałoby rozwiązanie z klasyką łyk-zegarek.

1
2
3
4
5
łyk.zadanie("oglądać", funkcjonować () {
łyk.watch(„./źródło/*.js”[„js”]).My("zmiana", funkcjonować(wydarzenie) {
konsola.dziennik(`Plik ${zdarzenie.ścieżka} został ${typ.zdarzenia}`);
});
});

Dzięki temu rozwiązaniu za każdym razem, gdy zmieniasz jeden ze swoich plików, uruchamiana jest cała kompilacja.

Obserwuj

Obserwuj sprawia, że ​​kompilacja plików jest wydajna Przeglądarka. Zachowa w pamięci wynik kompilacji każdego pliku (wszystkie pliki powiązane z twoim plikiem, takie jak zależności…).

Gdy plik jest aktualizowany, aktualizuje właśnie zmodyfikowany odcisk palca pliku i generuje plik zapakować bez analizowania wszystkich zależności.

Użyj Gulp, Browserify i Watchify – poziom ∞

Instalowanie zależności Node.js

Możesz je zainstalować za pomocą Yarn (jeśli naprawdę jesteś na bieżąco 🙂)!

1
$ przędza dodaj przeglądarkę łyk winylu-bufor winylu-źródło-strumień oglądaj –dev

W przeciwnym razie używasz starego, dobrego NPM 🙉

1
$ npm install browserify łyk bufora winylu strumień źródła winylu watchify –save-dev

gulpfile.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
„ścisłe użycie”;
const przeglądaj = wymagać(„przeglądaj”),
bufor = wymagać("bufor winylowy"),
łyk = wymagać("łyk"),
ścieżka = wymagać("ścieżka"),
źródło = wymagać(„strumień źródłowy winylu”),
użytkownik = wymagać(„przełyk-util”),
oglądać = wymagać(„obserwuj”),
źródło = {
js: „./src/main.js”
},
miejsce docelowe = {
js: "./zbudować/"
};
niech pakiet;
funkcjonować wiązki(profil) {
if (pakiet === undefined) {
if (profil === "oglądać") {
pakiet = watchify(browserify(src.js));
} więcej {
pakiet = przeglądarka (src.js);
}
}
pakiet();
}
funkcjonować zapakować() {
niech początek = nowa Data().uzyskać czas(),
_ = pakiet
.pakiet()
.My("błąd", util.log.bind(util, „Błąd przeglądania”))
.pipe(źródło(„główny.js”))
.pipe(bufor())
.pipe(gulp.cel(cel.js)),
czas = nowa Data().getTime() – start;
util.log(„[przeglądaj] ponowny pakiet” , użyj.kolory.cyjan(`${czas} ms), util.kolory.szary(`(${źródło.js})`));
powrót _;
}
łyk.zadanie(„js”, pakiety.bind(zero));
łyk.zadanie("oglądać", funkcjonować () {
wiązki("oglądać");
pakiet.on("aktualizacja", pakiet.bind(zero));
});
łyk.zadanie("domyślny"["oglądać", „js”]);

Tutaj masz niezwykle uproszczony, ale funkcjonalny przykład. Ten kod można jeszcze bardziej uprościć, ale pokazuje szkic kodu, który należy utworzyć, aby obsłużyć plik a przeładowanie na gorąco skuteczne.

Aby uprościć twoje zadanie, udostępniam ci archiwum z plikiem guplfile.js bardziej kompletny, który obsługuje kompilację plików JAVASCRIPT z Babel (a niektóre presetów jak ES2015), ale także pliki Mniej podczas zarządzania profilami takimi jak développement z lub bez zegarek lecz również produkcja z minifikacją!

Wnioski

Jest całkiem możliwe do wykorzystania Przeglądarka skutecznie z Łykać pod warunkiem, że grasz API. To zmusza cię do zboczenia z utartych szlaków i obejścia się bez wtyczek Łykać z których zwykle korzystamy.

★ ★ ★ ★ ★