Nhập scss cuộn lên
Có thể chúng ta đã rất quen thuộc với Webpack - một gói mô-đun được sử dụng rất nhiều trong việc xây dựng ứng dụng JavaScript. Rollup cũng vậy, nó là một module bundler dành cho JavaScript. Có tác dụng đóng gói các phần mã nhỏ thành một gói. Bạn có thể xem hình minh họa bên dưới để hiểu bản chất của module bundler Show Nguồn. freecodecamp. tổ chức2. Cài đặtToàn cầu
Sau khi cài đặt, các bạn có thể gõ 7 trên dòng lệnh để xem các tùy chọn đó, tham số mà 8 hỗ trợBây giờ chúng ta sẽ thử gói một ví dụ nhỏ sau để xem cách Rollup hoặc động
Đoạn mã trên sẽ xuất một hàm 9, kết quả trả về là 0Chúng ta sẽ xây dựng thử với Rollup
Sau khi build, file 1 của chúng ta sẽ như sau
Mình sẽ bao gồm file 1 và hàm 3 1Kết quả console on output output của trình duyệt 4Kết quả như mong muốn. tadaVà đương nhiên nếu bạn bao gồm 5 thì trình duyệt sẽ thông báo lỗi vì nó không hiểu được 6xin chào không được xác địnhĐịa phươngTrong trường hợp bạn không muốn sử dụng lệnh 8 toàn cầu, thì có thể cài đặt cục bộ và chỉ sử dụng được trong phạm vi của dự án 6Sau khi cài đặt, bạn có thể sử dụng giống như toàn cầu. Nhưng lúc này bạn phải khai báo Rollup trong npm scripts hoặc sử dụng lệnh npx 73. Định dạng tổng sốRollup support chung ta bundle code back with many format as. amd, cjs, esm, iife, umd. Đây chính là sức mạnh để Rollup được sử dụng trong quá trình xây dựng thư viện có thể chạy trên nhiều môi trường như Node. js, trình duyệt, ES Như ví dụ trên, mình đã bundle code lại với định dạng là iife để có thể chạy trên môi trường trình duyệt Để gói mã với các định dạng khác nhau, các bạn có thể sử dụng cờ 8 9Để hiểu về các định dạng. amd, cjs, esm, iife, umd. Bạn có thể đọc bài viết JAVASCRIPT. CJS, AMD, UMD và ESM là cái quái gì vậy? . đến 4. plugin tổng sốViệc sử dụng một plugin hỗ trợ bundler là điều rất cần thiết, bởi vì một bundler không thể tích hợp tất cả mọi thứ định dạng tích hợp sẵn và cũng không phải ai cũng muốn sử dụng các tính năng giống nhau. Vì vậy việc sử dụng plugin sẽ rất linh hoạt và có khả năng mở rộng đối với những ứng dụng / thư viện phức tạp Rollup hỗ trợ rất nhiều plugin ví dụ như transpile ES6/7 -> ES5, compile CSS preprocessor, minify JS,… Mình sẽ lấy một ví dụ sử dụng plugin rollup-plugin-babel để chuyển code JS dạng ES6 thành ES5 Chúng ta tiếp tục sử dụng ví dụ đầu tiên. Nhưng bây giờ trong file 5 sẽ được viết lại một chút, sử dụng cú pháp spead trong ES6 1If not used plugin to transpile ES6 -> ES5, thì file 1 after build will as after 3You see that. mã vẫn như vậy, điều này sẽ khiến cú pháp lây lan của trình duyệt không hỗ trợ báo cáo lỗi. Chúng ta sẽ chỉnh sửa lại bằng cách cài đặt thêm plugin babel 0Units must not any. Tiếp theo các script bạn khai báo trong 11 1Rollup sẽ tự động phát hiện tệp 12 trong thư mục gốc nếu bạn không truyền đường dẫn tới tệp cấu hình cho 13Trường hợp bạn muốn dùng nhiều file config cho các ngữ cảnh khác nhau thì có thể khai báo như sau 2Sau khi build với plugin babel. Chúng ta sẽ được tập tin 1 như sau 3nhìn code sau khi bundle, mình nhận ra JavaScript như một vũ trụ bao la 😂 And results in console of the browser 46. Viết thư việnSau khi đã tìm hiểu các khái niệm về Rollup như dòng lệnh, tệp cấu hình, định dạng, plugin. Chúng ta sẽ áp dụng ứng dụng Rollup để xây dựng một thư viện nhỏ có chức năng đảo ngược văn bản. Mình đặt tên thư viện là 15 (thêm 1 chữ 16 để tránh bị trùng tên khi phát hành package lên npm)Dù chưa code gì hết, nhưng mình hình dung ra cách mà chúng ta sẽ sử dụng thư viện như sau 5 6Vâng. bắt đầu mã Khởi tạo dự ánCấu hình thư mục cấu trúc của chúng ta sẽ đơn giản như bên dưới 7Cài đặt góiCác gói mình sẽ cài đặt như sau 8Các bạn sẽ thấy có thêm một plugin là 17 có tác dụng thu nhỏ JSCấu hình file configTiếp theo, chúng ta khai báo nội dung cho 12 9Như bạn thấy trong file config, mình sẽ build thư viện này cho 3 môi trường. Ngoài ra mình sử dụng thêm 17 để thu nhỏ đầu raCấu hình gói. jsonNgoài những thuộc tính thông thường như phiên bản, mô tả, …, chúng ta sẽ cấu hình một số thuộc tính đặc biệt sau First first is script to bundle 0Tiếp theo là định nghĩa các môi trường ứng dụng với đầu ra tệp 1Để hiểu thêm về các thuộc tính trên, các bạn có thể đọc thêm ở bài viết What’s what? . trang tính json viết mãSau khi config xong, chúng ta sẽ viết code cho file 60 2Có lẽ mình không nên giải thích cách viết ngược như thế nào 😁 Tiếp theo, chúng ta sẽ bó đoạn mã trên 3Và sau khi build, chúng ta sẽ có 3 tệp ứng dụng mới với 3 môi trường được tạo nằm trong thư mục 61 47. Xuất bản lên npmĐể chắc chắn rằng gói của chúng tôi đã được cài đặt và sử dụng thành công, các bạn hãy tìm hiểu 62 để xem cách kiểm tra gói trước khi xuất bảnCách xuất bản lên npm cũng đơn giản, bạn chỉ cần đăng nhập vào npm, sau đó nhập lệnh 63. Tất cả quá trình đều được thực hiện thông qua dòng lệnh 5 6Trong quá trình viết bài này và làm demo, mình cũng đã publish thư viện lên npm. https. //www. npmjs. com/gói/đảo ngược Vì đã thành công nên tất cả mọi người đều có thể sử dụng thư viện của chúng ta. Cùng xem qua hai ví dụ mình sử dụng 15 trên CodePen và CodeSandboxTrình duyệt môi trường Mô-đun môi trường (Vue. ứng dụng js) 8. Kết luậnBài viết khá dài, nhưng có một số điều bạn cần nhớ
Rollup còn rất nhiều tính năng, mình chỉ đi qua một phần nhỏ. Các bạn hãy lên trang chủ của Rollup để tìm hiểu sâu hơn Có người hỏi rằng khi nào thì sử dụng Webpack và khi nào thì sử dụng Rollup?
Nếu bạn muốn xây dựng ứng dụng, hãy sử dụng Webpack, muốn xây dựng thư viện sử dụng được ở nhiều môi trường, hãy sử dụng Rollup |