Gulp Là Gì

  -  

Gulp là gì?

Gulp là 1 lao lý giúp cho bạn tự động hóa nhiều task (nhiệm vụ) trong quy trình phát triển website. Nó thường được sử dụng để triển khai những tác vụ front kết thúc như:

Tạo ra một web serverReloadtrình để mắt một bí quyết tự động hóa bất cứ bao giờ một tệp tin được lưuSử dụng các preprocessor y hệt như Sass hoặc LESSTối ưu hóa những tài ngulặng nhỏng CSS, JavaScript và hình ảnh

Đây không hẳn là 1 trong những list trọn vẹn về mọi sản phẩm mà lại Gulp có thể làm cho. Nếu ý muốn, bạn cũng có thể tạo một generator website site tĩnh.Gulp cực kỳ mạnh mẽ, mà lại bạn cần học tập bí quyết sử dụng Gulp nếu muốn tạo ra một quá trình (process) của riêng biệt mình.quý khách hàng sẽ xem: Gulp là gì

Bài viết này sẽ giúp chúng ta bao gồm kiến thức và kỹ năng cơ phiên bản về Gulp tiếp đến chúng ta có thể từ mình khám phá đầy đủ sản phẩm.

Bạn đang xem: Gulp là gì

Trước khi đi sâu vào Gulp, hãy nói tới nguyên do tại sao chúng ta áp dụng Gulp mà lại chưa hẳn những phương pháp không giống.

Tại sao lại là Gulp?

Những nguyên lý như Gulp thường xuyên được kể như thể "build tools" cũng chính vì chúng là hầu như mức sử dụng thực hiện các task trong quy trình kiến thiết một trang web. Hai build tools phổ biến tốt nhất bây chừ là Gulp với Grunt. Tất nhiên, vẫn đang còn đa số vẻ ngoài khác chẳng hạn như Broccoli, Brunch.

Có nhiều nội dung bài viết đề cùa đến sự không giống nhau giữa Grunt và Gulp và nguyên nhân tại vì sao chúng ta lại sử dụng dụng cụ này mà lại không hẳn là các cách thức không giống. Nhưng điểm khác biệt chính là bí quyết chúng ta thông số kỹ thuật một workflow cùng với chúng. Gulpthông số kỹ thuật ngắn hơn với dễ dàng và đơn giản rộng khi đối chiếu cùng với Grunt. Gulp cũng chạy nkhô giòn hơn.

Cái chúng ta vẫn làm

Khi hoàn thành bài viết này, bạn sẽ có một workflow thực hiện những task sau:

Tạo ra một website serverBiên dịch Sass thành CSSRefesh trình chăm chú auto bất kể khi nào bạn lưu lại một fileTối ưu hóa những tài nguyên ổn (CSS, JS, fonts, với hình ảnh) mang lại phiên bảnproduction

Quý khách hàng cũng trở nên học phương pháp nối một chuỗi những task không giống nhau vào mộtlệnh đơn giản.

Hãy bước đầu bằng phương pháp setup Gulp bên trên máy tính xách tay của người sử dụng.

Cài đặt Gulp

quý khách hàng đề nghị sở hữu đặtNode.js trước lúc rất có thể download đặtGulp.

Sau lúc sẽ setup Node, chúng ta có thể cài đặt Gulp bằng phương pháp áp dụng lệnh sau:

$ suvị npm install gulp -gCrúc ý: chỉ đông đảo người tiêu dùng Mac new buộc phải áp dụng từ khóa sudo

npm install làlệnh thực hiện Node Package Manager (npm) để thiết đặt Gulp trên máy vi tính của doanh nghiệp.

Cờ -g vào lệnh này nói cùng với npm mua Gulp với phạm vi tổng thể bên trên máy tính của chúng ta, nó chất nhận được sử dụng lệnh gulp ngơi nghỉ bất kỳ đâu trên khối hệ thống của khách hàng.

Bây tiếng Gulp đã làm được setup, hãy tạo thành một dự án sử dụng Gulp.

Tạo một Gulp project

Trước tiên, họ sẽ tạo ra một thư mục project. Đây vẫn là tlỗi mục gốc của dự án công trình. Di gửi vào thư mục project với chạy lệnh npm init:

# ... from within our project folder$ npm initLệnh npm init sẽ khởi tạo ra một tệp tin package.json lưu trữ các lên tiếng về project, nlỗi các dependencies được thực hiện trong dự án công trình (Gulp là một trong dependency).

npm initđã trải đời các bạn xác nhận:


*

lúc file package.json đã làm được sinh sản, chúng ta có thể thiết lập Gulp vào dự án bằng cách áp dụng lệnh:

$ npm install gulp --save-devLệnh này sẽ cài đặt Gulp vào project của người tiêu dùng cố vày cài đặt toàn thể.

Cờ --save-devđã thêm gulp như một dev dependency vào package.json.


*

Nếu chất vấn tlỗi mục project khi lệnh đã thực thi ngừng, các bạn sẽ thấy tất cả thêm tlỗi mục node_modules. quý khách hàng cũng bắt gặp thỏng mục gulp vào node_modules.


*

Chúng ta gần như là sẽ sẵn sàng để bắt đầu thao tác làm việc cùng với Gulp. Nhưng trước khi làm cho điều ấy, họ bắt buộc xác định phương pháp chúng ta sử dụng Gulp mang lại project, với một trong những phần trong số ấy là chọn 1 cấu trúc thư mục.

Chọn cấu tạo tlỗi mục

Gulp đầy đủ linh hoạt để triển khai bài toán với mọi cấu tạo thỏng mục. Trong bài viết này, chúng ta vẫn sử dụng một kết cấu thường xuyên thấy:

|- app/ |- css/ |- fonts/ |- images/ |- index.html |- js/ |- scss/ |- dist/ |- gulpfile.js |- node_modules/ |- package.jsonTrong kết cấu này, bọn họ đã áp dụng thỏng mục ứng dụng cho mục tiêu trở nên tân tiến, trong những khi thỏng mục dist (distribution) được áp dụng nhằm đựng các file đã có được buổi tối ưu đến web site production.

Bây giờ, hãy bước đầu bằng phương pháp tạo nên Gulp task đầu tiên của chúng ta trong gulptệp tin.js, cái lưu trữ tất cả thông số kỹ thuật của Gulp.

Viết Gulp task đầu tiên

Bước thứ nhất nhằm áp dụng Gulp là require vào gulpfile.

var gulp = require("gulp");Câu lệnh require nói cùng với Node tra cứu tìm trong thư mục node_modules package có tên gulp. Khi package được kiếm tìm thấy, họ gán câu chữ tới vươn lên là gulp.

Bây tiếng bạn có thể viết một gulp task. Cú pháp cơ bạn dạng nhỏng sau:

gulp.task("task-name", function() // Stuff here);task-name là tên gọi của task, loại sửdụng Lúc bạn có nhu cầu chạy một task vào Gulp. quý khách hàng cũng hoàn toàn có thể chạy task đó trong commvà line bằng lệnh gulp task-name.

Để chất vấn, sản xuất một task hello, dòng in ra "Hello Zell".

gulp.task("hello", function() console.log("Hello Zell"););Chúng ta rất có thể chạy task cùng với lệnh gulp hello.

$ gulp helloLệnh bên trên đã in ra "Hello Zell".


*

Thực tế, các Gulp task sẽ phức hợp rộng một chút. Nó thường xuyên cất rộng 2 cách làm Gulp, cùng với khá nhiều plugin của Gulp.

Một task đích thực sẽ giống hệt như vậy này:

gulp.task("task-name", function () return gulp.src("source-files") // Get source files with gulp.src .pipe(aGulpPlugin()) // Sends it through a gulp plugin .pipe(gulp.dest("destination")) // Outputs the file in the destination folder)gulp.src nói với Gulp task các file được sử dụng, trong những khi gulp.dest nói với Gulp chỗ chứa các tệp tin công dụng lúc task hoàn toàn.

Hãy demo thi công một task thực sự, biên dịch những file Sass thành CSS.

Xem thêm: Download Game Đua Xe F1 2020 Full Crack Miễn Phí Cho Pc, Game Đua Xe F1 2015

Preprocessing cùng với Gulp

Chúng ta cũng thêm cờ --save-dev để bảo đảm an toàn gulp-sass được cấp dưỡng devDependencies vào package.json.

$ npm install gulp-sass --save-devChúng ta cũng cần require gulp-sass như đã làm với gulp trước lúc hoàn toàn có thể sử dụng:

var gulp = require("gulp");// Requires the gulp-sass pluginvar sass = require("gulp-sass");Chúng ta rất có thể sử dụng gulp-sass bằng phương pháp thay thế aGulpPlugin() với sass(). Chúng ta sẽ đánh tên task biên dịchSass thành CSS là sass.

gulp.task("sass", function() return gulp.src("source-files") .pipe(sass()) // Using gulp-sass .pipe(gulp.dest("destination")));Chúng buộc phải cung ứng mang lại task sass các tệp tin nguồn với một tlỗi mục tiêu nhằm đựng các tệp tin CSS, vì vậy hãy chế tạo ra một file styles.scss trong tlỗi mục app/scss. Đây là file sửa chữa thay thế cho source-files vào pmùi hương thứcgulp.src.

Chúng ta vẫn muốn lưu file kết quả styles.css tớithư mục app/css, sửa chữa destinationtrong cách làm gulp.dest với app/css.

gulp.task("sass", function() return gulp.src("app/scss/styles.scss") .pipe(sass()) // Converts Sass to CSS with gulp-sass .pipe(gulp.dest("app/css")));Quý Khách hoàn toàn có thể kiểm tratask sass đang thao tác chính xác không bằng cách thêm một hàm Sass vào tệp tin styles.scss.

// styles.scss.testing width: percentage(5/7);Nếu chạy gulp sass vào comm& line, các bạn sẽ thấy filestyles.css vào thư mục app/css. Bên cạnh đó, nó sẽ sở hữu được văn bản nlỗi sau:

/* styles.css */.testing width: 71.42857%; Đó là phương pháp bọn họ kiểm tratask sass đã thao tác làm việc tuyệt chưa.

Thỉnh thoảng họ cầnbiên dịch nhiều hơn một file .scss thành CSS. Chúng ta có thể có tác dụng điều này cùng với Node globs.

Globbing vào Node

Globs y hệt như regular expressions, tuy nhiên giành cho đường truyền tệp tin.

Hầu không còn những workflow cùng với Gulp thường xuyên chỉ trải đời 4 globbing pattern sau:

*.scss: * là ký kết từ thay mặt có nghĩa tương xứng với tất cả pattern vào thư mục hiện nay. Trong ngôi trường phù hợp này, là vớ cảfile dứt với .scss vào thỏng mục nơi bắt đầu (project).**/*.scss: Tất cả cáctệp tin xong với .scss vào thư mục root cùng cácthư mục con.!not-me.scss: ! báo cho biết Gulp đã bỏ lỡ pattern tương xứng. Trong trường thích hợp này file not-me.scss sẽ tiến hành bỏ lỡ.*.+(scss|sass): Dấu + và () cho phép Gulp phối hợp nhiều pattern, những pattern khác biệt được phân làn vì chưng cam kết từ bỏ | .Trong ngôi trường đúng theo này là ngẫu nhiên tệp tin xong xuôi cùng với .scss hoặc .sass trong tlỗi mục cội.

lúc biết globbing, chúng ta cũng có thể sửa chữa thay thế app/scss/styles.scss cùng với patternscss/**/*.scss, nó vẫn đem bất kỳ tệp tin làm sao có phần mở rộng .scss vào thỏng mục app/scss hoặc trongthỏng mục con.

gulp.task("sass", function() return gulp.src("app/scss/**/*.scss") // Gets all files ending with .scss in app/scss và children dirs .pipe(sass()) .pipe(gulp.dest("app/css")))Mọi tệp tin Sass được tìm thấy trong app/scss vẫn auto sản xuất task sassngơi nghỉ trên. Nếu các bạn thêm một file print.scss cho tới project, bạn sẽ thấy print.css trong app/css.


*

Lúc này chúng vẫn quản lý được Việc biên dịch những file Sass thành CSS với cùng 1 lệnh tuyệt nhất. Câu hỏi là, bọn họ sẽ phải chạy lệnh gulp sass bất cứ lúc nào bọn họ biến đổi tệp tin sass nhằm biên dịch Sass thành CSS?

May mắn, bạn cũng có thể nói với Gulp tự động chạy task sass bất cứ khi nào một tệp tin được lưu thông sang 1 process Hotline là "watching".

Theo dõi sự chuyển đổi của những tệp tin Sass

Gulp cung ứng mang đến bọn họ thủ tục watch, chiếc quan sát và theo dõi ví như một file được giữ. Cú pháp của watch là:

// Gulp watch syntaxgulp.watch("files-to-watch", ); Nếu chúng ta ý muốn quan sát và theo dõi toàn bộ những file Sass và chạy task sass bất kể lúc nào một tệp tin Sass được lưu giữ, bọn họ chỉ việc sửa chữa thay thế files-to-watch với app/scss/**/*.scss, với với :

// Gulp watch syntaxgulp.watch("app/scss/**/*.scss", ); Trong thực tiễn, chúng ta đang mong mỏi theo dõi không ít phong cách file một thời gian. Để có tác dụng vấn đề này, chúng ta có thể gộp nhiều tiến trình theo dõivào một trong những task watch:

gulp.task("watch", function() gulp.watch("app/scss/**/*.scss", ); // Other watchers)Nếu các bạn chạy lệnh gulp watch, bạn sẽ thấy Gulp bước đầu quan sát và theo dõi tức thì mau chóng.


Và nó đã auto chạy task sass bất kể lúc nào các bạn lưu một file .scss

Cách tiếp theo là làm cho Gulp reload lại trình duyệt y bất cứ lúc nào bọn họ giữ một tệp tin .scss với việc hỗ trợ của Browser Sync.

Live-reloading với Browser Sync

Browser Sync góp việc cải tiến và phát triển web tiện lợi hơn bằng cách tạo ra một website hệ thống mẫu góp bọn họ live-reloading dễ dàng.

trước hết bọn chúng đã thiết đặt Browser Sync:

$ npm install browser-sync --save-devQuý khách hàng hoàn toàn có thể lưu ý rằng không tồn tại chi phí tố gulp- khi thiết lập Browser Sync. Bởi bởi Browser Sync không phải là một trong những plugin của Gulp.

Để sử dụng, chúng ta sẽ require Browser Sync.

var browserSync = require("browser-sync").create();Chúng ta phải tạo nên task browserSync để chất nhận được Gulp khởi tạo thành một hệ thống sử dụng Browser Sync. Lúc chạy VPS, bọn họ nên cho Browser Sync biết thỏng mục nơi bắt đầu của server. Trong trường thích hợp này, nó là tlỗi mục "app":

gulp.task("browserSync", function() browserSync.init( server: baseDir: "app" , ))Chúng ta cũng biến hóa task sass một chút ít vì chưng Browser Sync hoàn toàn có thể tiêm những style CSS bắt đầu (update CSS) vào trình cẩn thận, bất cứ lúc nào task sass chạy.

gulp.task("sass", function() return gulp.src("app/scss/**/*.scss") // Gets all files ending with .scss in app/scss .pipe(sass()) .pipe(gulp.dest("app/css")) .pipe(browserSync.reload( stream: true )));Chúng ta vẫn cấu hình Browser Sync. Bây giờ chúng ta chạy cả 2 task watch cùng browserSync đồng thời nhằm live-reloading.

Khá phiền toái Khi mở 2 của sổ commvà line với chạy gulp browserSync với gulp watch, hãy nhằm Gulp chạy bọn chúng đôi khi bằng cách nói mang đến task watch rằng browserSync bắt buộc chấm dứt trước khi watch được có thể chấp nhận được chạy.

Chúng ta hoàn toàn có thể làm cho điều đó bằng phương pháp thêm tsi số thứ hai tới watch task. Đây là cú pháp:

gulp.task("watch", , function () // ...)Và vào ngôi trường hòa hợp này họ thêm browserSync task.

gulp.task("watch", , function () gulp.watch("app/scss/**/*.scss", ); // Other watchers)Chúng ta cũng muốn bảo vệ rằng sass vẫn chạy trước watch vì CSS vẫn luôn luôn là tiên tiến nhất ngẫu nhiên bao giờ họ chạy một lệnh Gulp.

gulp.task("watch", , function () gulp.watch("app/scss/**/*.scss", ); // Other watchers);Bây tiếng nếu như bạn chạy gulp watch trong command line, Gulp sẽ bắt đầu cả 2 sass cùng browserSync task đôi khi. Khi cả hai task hoàn thành, watch sẽ chạy.


Tại cùng thời khắc, một cửa sổ trình chăm sóc sẽ trỏ mang đến app/index.html đang bật lên. Nếu các bạn biến hóa tệp tin styles.scss, bạn sẽ thấy trình phê duyệt vẫn auto reload.

Cuối thuộc, làm cho nạm như thế nào trường hợp bạn muốn trình thông qua tự động reload khingẫu nhiên tệp tin HTML hoặc JavaScript được lưu?

Chúng ta rất có thể có tác dụng bằng cách thêm 2 hoặc nhiều hơn thế những các bước theo dõi, cùng Call hàm browserSync.reload khi một tệp tin được lưu:

gulp.task("watch", , function () gulp.watch("app/scss/**/*.scss", ); // Reloads the browser whenever HTML or JS files change gulp.watch("app/*.html", browserSync.reload); gulp.watch("app/js/**/*.js", browserSync.reload); );Đến trên đây chúng ta vẫn làm 3 thứ:

Khởi tạo nên một website serverSử dụng Sass preprocessorReloading trình chu đáo tự động bất kể lúc nào một tệp tin được lưu

Phần tiếp theo sau đã đề cùa đến vấn đề về tối ưu những tài nguyên ổn. Chúng ta đang bước đầu cùng với bài toán về tối ưu hóa những tệp tin CSS và JavaScript.

Xem thêm: Game Thế Giới Mở Cho Pc (Cập Nhật 2020, Thế Giới Mở: 10 Game Co

Tối ưu hóa những tệp tin CSS với JavaScript

Một sự việc những thiết kế viên bắt buộc đương đầu là rất khó bao gồm thểnối những tệp tin js theo lắp thêm tự chính xác.