2015-03-22 15 views
64

Tôi đang cố gắng để có được Grunt, mà tôi mới, nhưng tôi không hiểu tiện ích của nó.Grunt là gì?

Tôi hiểu rằng đó là một taskrunner. Tôi hiểu rằng nó có thể được sử dụng để làm những việc như bó, uglify, jshint, minify, vv vv, bất cứ điều gì có thể được biến thành một nhiệm vụ kịch bản.

Nhưng tôi không thấy lợi ích này mang lại lợi ích gì. Gần như tất cả những điều này có thể được chạy từ dòng lệnh anyway, đó là để nói rằng bạn chỉ có thể kết hợp chúng bằng cách sử dụng một kịch bản shell đơn giản. Dường như với tôi rằng việc thiết lập grunt + gruntfiles và các tác vụ viết là nhiều hơn hoạt động hơn là viết một kịch bản lệnh shell, thay vì ít hơn.

Tôi thiếu gì về điều này?

+2

grunt mất công việc grunt ra khỏi dự án. tác vụ chạy trình tối ưu hóa javascript, css lint và hơn thế nữa. viết kịch bản shell tùy chỉnh không phải là lý tưởng. Thiết lập grunt khá dễ so sánh. – floor

Trả lời

109

Grunt về cơ bản là trình quản lý công việc/xây dựng được viết trên đầu trang của NodeJS. Tôi sẽ gọi nó là NodeJS stack tương đương với ANT cho Java. Dưới đây là một số kịch bản phổ biến bạn sẽ muốn sử dụng grunt dưới:

  1. Bạn có một dự án với các tập tin javascript đòi hỏi việc rút gọn, và nói chung tạo ra một giao diện người Êđê dựng riêng rẽ (trong trường hợp bạn đang sử dụng nói JAVA cho backend của bạn) . (grunt-contrib-làm xấu đi)
  2. Khi bạn lưu mã trên máy tính của bạn trong phát triển, bạn muốn trình duyệt để tải lại trang của bạn tự động (có vẻ giống như một điều nhỏ, nhưng tôi tin rằng điều này đã cứu tôi rất nhiều thời gian) . (Tải lại trực tiếp)
  3. Khi nhà phát triển lưu mã trên máy của mình, anh ta muốn danh sách toàn diện các lỗi JS/vi phạm thực hành tốt nhất được hiển thị. (grunt-contrib-jshint)
  4. Bạn có một dự án với các tệp SASS/LESS cần được biên dịch thành tệp CSS trên máy phát triển trong quá trình phát triển. Ví dụ: khi lưu tệp SASS, bạn muốn nó được biên dịch thành một tệp CSS tự động, để đưa vào trang của bạn. (grunt-contrib-sass)
  5. Bạn có một nhóm các nhà phát triển giao diện người dùng đang làm việc trên giao diện người dùng và một nhóm các nhà phát triển phụ trợ làm việc trên chương trình phụ trợ, bạn muốn các nhà phát triển giao diện người dùng sử dụng REST phụ trợ API mà không cần phải biên dịch & triển khai mã mỗi lần trên máy của riêng họ. Trong trường hợp bạn đang tự hỏi, điều này là không thể với một thiết lập máy chủ web điển hình bởi vì XHR không được phép là tên miền chéo bởi trình duyệt. Grunt có thể thiết lập một proxy cho bạn chuyển hướng các yêu cầu XHR trên hệ thống của riêng bạn trong máy chủ kết nối grunt đến một hệ thống khác! (grunt-contrib-proxy, grunt-contrib kết nối)

Tôi không nghĩ rằng kịch bản shell của bạn có thể làm tất cả trong số này. Tóm lại, có, thiết lập một Gruntfile.js là tẻ nhạt đối với một người đã có ít tiếp xúc với javascript/là mới đối với nodeJS, tôi đã trải qua những nỗi đau tương tự như một người học, nhưng Grunt là một phần tuyệt vời của phần mềm. DO đầu tư thời gian để thiết lập một Gruntfile.js thích hợp cho dự án kết thúc trước của bạn, và bạn sẽ cảm ơn Chúa vì làm cho cuộc sống của bạn dễ dàng hơn nhiều :)

Các Advantage vs shell script:

  1. Nếu bạn viết kịch bản lệnh shell cho mỗi một trong số các tác vụ này, bạn sẽ rất tẻ nhạt để duy trì và sau đó tùy chỉnh cho từng nhu cầu của mình. Gruntfile.js thực sự khá dễ dàng. có một cấu hình mà bạn khởi tạo nó, chỉ định những nhiệm vụ nào bạn muốn thực hiện, các nguồn và các mục tiêu cho mỗi tác vụ.

  2. Việc tích hợp với máy phát điện hạt dự án trên Yeoman, Gulp là một yếu tố quan trọng để xem xét. Yeoman và Gulp đến với Gruntfile.js 'với mặc định thông minh. Đối với một người đóng góp giao diện người dùng duy nhất trong nhóm của mình, điều này là vô giá đối với tôi!

  3. Đối với người đang làm việc trên công nghệ lối vào, nếu bạn có nhiều người làm việc với bạn, họ dễ dàng tìm hiểu Grunt, đã được ghi nhận nhiều câu trả lời trên SO, để biết kịch bản shell của bạn. Đây có thể là một yếu tố trong các đội lớn.

  4. Các nhiều plugin cho Grunt mở rộng chức năng cơ bản. Trừ khi kịch bản shell của bạn là RẤT phổ biến, và VERY modular, tôi không thấy các plugin được xây dựng cho nó. Điều này cũng mở rộng để đưa vào các công nghệ giao diện người dùng mới trong dự án của bạn. Giả sử, nếu bạn muốn sử dụng kiểu chữ trong dự án của bạn vào ngày mai, kịch bản lệnh shell của bạn sẽ cần phải kết hợp nó và tự mình dùng nó. Với Grunt, nó đơn giản như "npm install" và thêm một cấu hình.

+3

Câu trả lời rất hay. Grunt thật tuyệt vời !!! – ihue

5

Mặc dù tôi đồng ý với hầu hết các lợi thế chỉ trong Accepted Answer, tôi vẫn phải xem xét những nhược điểm đó được đánh dấu bởi Keith Cirkel trong Why we should stop using Grunt & Gulp

Do đó, một số lợi thế được bác bỏ bởi các chi phí Grunt và ít nhất bạn nên xem xét tất cả điều này trong quyết định cuối cùng của bạn về việc sử dụng Grunt, hay không.

Các vấn đề liên quan