Css đầu ra cuộn lên
Trong hướng dẫn này, chúng tôi sẽ thảo luận về cách chúng tôi có thể tạo thư viện javascript và xuất bản nó lên npm. Trong bài viết trước, chúng tôi đã xây dựng một tập lệnh nhỏ để tạo menu dạng cây lồng nhau. Chúng tôi sẽ chuyển đổi nó thành gói npm tại đây Bước 1. Khởi tạo thư mục và repoHãy tạo một thư mục cho thư viện và thêm README. tập tin md ở đó. Đây sẽ là thời điểm tốt để thực hiện git init và tạo một repo github từ xa để theo dõi nó. (Nếu bạn chưa quen với điều này, bạn có thể kiểm tra github howto tại đây) Bước 2. Thêm tập lệnh và biểu định kiểu bên trong thư mục srcTrong hướng dẫn này, chúng tôi dự định xây dựng gói và sau đó sử dụng gói đó từ một dự án mẫu. Ta sẽ tạo 2 thư mục riêng. Một cho gói và một cho ví dụ Trong thư mục gói, chúng tôi sẽ tạo các thư mục riêng cho tệp nguồn và tệp được tạo. Trong quy trình làm việc javascript hiện đại, bạn hiếm khi phân phối trực tiếp các tệp nguồn được mã hóa thủ công. Các tệp nguồn được chuyển qua các gói thực hiện các chuyển đổi và tối ưu hóa khác nhau, đồng thời cung cấp các tệp đầu ra mà sau đó có thể được sử dụng trong trình duyệt hoặc các môi trường khác. Vì vậy, chúng tôi sẽ tiếp tục và tạo hai tên thư mục npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 5 - cho các tệp nguồn và npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 6 - cho các tệp đầu ra. Chúng tôi không cần đụng đến thư mục npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 6. Nó sẽ được phổ biến bởi bundlerBên trong thư mục src, hãy tạo 2 thư mục con - npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 8 và npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 9 để chứa các tệp javascript và biểu định kiểu tương ứngCấu trúc thư mục sẽ trông như thế này bây giờ ├── README.md Chúng tôi sẽ sao chép nội dung của thẻ style trong ví dụ menu cây lồng nhau của chúng tôi vào gói/src/styles/main. scss. Chúng tôi đang sử dụng tiện ích mở rộng scss để có thể sử dụng các tính năng cụ thể của sass trong tương lai. Nhưng hiện tại, biểu định kiểu của chúng tôi thực sự chỉ là css thuần túy Tương tự chúng ta cũng sẽ copy nội dung của thẻ style vào package/src/js/index. js Chúng tôi đã thực hiện hai thay đổi đối với nội dung được sao chép từ thẻ tập lệnh
Bây giờ hãy gọi npm init từ bên trong thư mục gói. Điều này sẽ tạo ra một gói. json mà chúng tôi sẽ chỉnh sửa để sửa đổi khóa npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 1 và thêm 2 khóa nữa - npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 2 và npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 3. Chúng tôi cũng sẽ đặt thuộc tính tệp thành danh sách trắng thư mục dist sẽ được thêm vào góiKhóa npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 1 đại diện cho điểm vào của gói. Nếu chúng tôi đang xây dựng một thư viện được sử dụng ở phía máy chủ bằng NodeJS, thì chúng tôi sẽ trỏ thư viện này tới định dạng đầu ra CommonJS. Nhưng ở đây, chúng tôi đang xây dựng một thư viện giao diện hoàn toàn không sử dụng bên ngoài ngữ cảnh trình duyệt. Vì vậy, chúng tôi sẽ đặt nó để trỏ đến đầu ra định dạng mô-đun ES - điều này sẽ giúp nó có thể truy cập được thông qua các câu lệnh nhập. Vì vậy, giá trị được đặt thành npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 5. Tệp chưa tồn tại và chúng tôi sẽ tạo tệp bằng cách sử dụng gói của chúng tôi trong các bước tiếp theoĐiểm vào npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 2 có nghĩa là được sử dụng để trỏ cụ thể đến đầu ra của mô-đun ES. Điều này hữu ích trong trường hợp khi phần chính được đặt để trỏ đến đầu ra CommonJS. Trong trường hợp của chúng tôi, chúng tôi đã chỉ chính cho một. tập tin esm. Nhưng dù sao đi nữa, chúng tôi cũng sẽ đặt thuộc tính mô-đun để trỏ đến npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 5Mục nhập npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 3 phải trỏ đến tệp tập lệnh có thể được tải trực tiếp trong thẻ tập lệnh của trình duyệt. Chúng tôi sẽ đặt giá trị này thành npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 9 trong đó umd là viết tắt của định nghĩa mô-đun phổ quátCả hai tệp điểm vào - esm cũng như umd sẽ được tạo bằng trình đóng gói như sau Bước 4. Cài đặt tổng sốChúng tôi sẽ sử dụng tổng số làm trình đóng gói để tạo các tệp phân phối gói của chúng tôi. Có sẵn nhiều hệ thống gói khác nhau — webpack hiện đang phổ biến nhất. Nhưng rollup phù hợp hơn để tạo các thư viện có thể phân phối lại npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser Ngoài rollup, chúng tôi cũng đang cài đặt thêm 2 plugin tại đây — một để chuyển đổi scss thành css và plugin terser để giảm thiểu các tệp được tạo Bước 5. Tạo tệp js cấu hình tổng sốChúng tôi hướng dẫn gói tổng số bằng cách sử dụng tổng số. cấu hình. tập tin js Trong cấu hình trên, chúng tôi đang chỉ định đầu vào là chỉ mục. js mà chúng ta đã tạo bên trong src/js. Chúng tôi không phải chỉ định một đầu vào riêng cho css vì chúng tôi đã nhập các kiểu bên trong chỉ mục. js chính nó Chúng tôi cũng đã định cấu hình 2 đầu ra khác nhau, mỗi đầu ra tương ứng với một trong các điểm vào được chỉ định trong gói. json. Chỉ cần đề cập đến các định dạng như trên, rollup sẽ đảm nhận việc chuyển đổi nguồn của chúng tôi sang định dạng đó Chúng tôi cũng cần thu nhỏ các tệp đầu ra được tạo để phân phối, việc này được thực hiện bởi plugin npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 20. Và cuối cùng, chúng tôi tạo một css đầu ra được rút gọn bằng cách sử dụng plugin scssBây giờ tất cả các cấu hình đã hoàn tất, chúng ta có thể gọi tập lệnh dòng lệnh cuộn lên với nhiều tùy chọn khác nhau. Gọi npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 21 sẽ xây dựng gói. Nhưng thay vì gọi nó trực tiếp, thay vào đó, chúng tôi sẽ đặt các lệnh tương ứng với các tập lệnh khác nhau trong gói. json bằng cách chỉ định một mảng tập lệnh như sauBây giờ chúng ta chỉ cần gọi npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 22 và nó sẽ tạo ra tất cả các tệp đầu ra bên trong thư mục npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 23. Bây giờ chúng tôi cần xác minh nó hoạt độngBước 7. Kiểm tra phiên bản umd của gói bằng một ví dụ html bằng cách sử dụng liên kết npmĐể kiểm tra xem gói hoạt động như thế nào khi được nhập bởi một ứng dụng khác, chúng ta có thể tạo một ứng dụng mẫu và nhập gói này Chúng tôi sẽ tạo một tệp npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 24 bên trong thư mục npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 25. Hãy sao chép nội dung html sau vào tệpLưu ý rằng tệp ở trên tham chiếu tệp js và css từ npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 26. Nhưng chúng tôi chưa xuất bản gói của mình lên npm. Vậy làm cách nào để đảm bảo rằng thư mục node_modules bên trong npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 25 sẽ chứa gói listree?NPM cung cấp lệnh npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 28 chỉ cho việc này. Nếu bạn đã quen với môi trường gói của python, thì điều này có tác dụng tương tự như chạy npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 29 từ bên trong thư mục gói. Về cơ bản, nó sẽ cài đặt gói ở bất kỳ nơi nào bạn muốn kiểm tra gói đó - trong chế độ phát triển. Vì vậy, nếu có bất kỳ thay đổi nào được thực hiện trong mã gói, điều đó cũng sẽ có sẵn ngay lập tức để ứng dụng gọi kiểm tra. Điều này đảm bảo rằng chúng tôi không phải xuất bản mỗi khi chúng tôi muốn kiểm tra một thay đổi nhỏ mà chúng tôi đã thực hiện. Vì vậy, những gì chúng ta sẽ làm thay vào đó là liên kết gói cục bộVì vậy, trước tiên, chúng tôi sẽ chạy npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 28 bên trong thư mục npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 31 của chúng tôi. Khi lệnh này thành công, gói được liên kết với thư mục mô-đun nút chung trong máy phát triểnBây giờ để sử dụng gói của chúng tôi trong một gói khác mà chúng tôi đang phát triển, chúng tôi sẽ vào bên trong thư mục ví dụ và chạy npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 32 ở đó. Điều này sẽ tạo một thư mục npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 26 bên trong thư mục ví dụ với gói npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 34 được bao gồm bên trong. Khi mở tệp npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 35 trong trình duyệt, chúng tôi có thể thấy chức năng hoạt động như mong đợiBước 8. Kiểm tra việc nhập gói dưới dạng mô-đun ES6 bằng cách sử dụng webpackĐể kiểm tra hành vi của gói dưới dạng mô-đun ES6, chúng tôi sẽ tạo một src/index. js bên trong thư mục ví dụ với nội dung sau Để làm cho tập lệnh này có thể tải được thông qua thẻ tập lệnh, chúng tôi sẽ sử dụng webpack để chuyển đổi và gói tập lệnh đó. Chúng tôi sử dụng webpack thay vì rollup ở đây vì webpack phù hợp hơn với gói ứng dụng ngay lập tức (trong khi rollup phù hợp hơn với gói thư viện) và sẽ phù hợp hơn để kiểm tra hành vi của gói của chúng tôi khi nó được gói qua webpack vì webpack là tốt nhất Trước tiên, chúng tôi sẽ phải cài đặt webpack và webpack-cli bằng cách chạy npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 36Sau đó, chúng tôi thêm một npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 37 như thế nàyNếu chúng ta chạy npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 38, nó sẽ tạo ra tệp npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 39. Bây giờ chúng tôi sẽ sao chép umd của chúng tôi. html thành npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 20 và thay thế thẻ script ở dưới cùng đề cập đến danh sách. uhm. tối thiểu. js với thẻ script đề cập đến tệp npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 39 này. Đó là, chúng tôi sẽ thay thế nàynpm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 2Với cái này - npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 3Trong trường hợp thứ hai, chúng ta không cần gọi hàm npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 22 vì chúng ta đã gọi nó bên trong chỉ mục của mình. js được đóng gói dưới dạng npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 23. Bây giờ nếu chúng tôi mở npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 20 trong trình duyệt, chúng tôi có thể thấy rằng chức năng hoạt động như mong đợiLưu ý rằng chúng tôi đã kiểm tra cả hai tệp html bằng cách tải chúng trực tiếp bằng giao thức npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 25. Nếu chúng tôi muốn kiểm tra chúng trong bối cảnh chúng được phục vụ qua máy chủ web, chúng tôi có thể sử dụng plugin html và devserver của webpack để làm điều tương tự. Nhưng hãy giữ nó như một nhiệm vụ cho một bài đăng trong tương lai vì mục đích ngắn gọnBước 9. Đẩy tới repo githubBây giờ chúng ta đã hoàn thành việc tạo gói, hãy cũng thực hiện thao tác đẩy lên github. Chúng ta cũng cần chỉnh sửa. gitignore để loại trừ các thư mục dist và node_modules npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 2Phiên bản cam kết khóa gói là được. tập tin json mặc dù Bước 10. Xuất bản gói lên npmĐể làm điều này, trước tiên chúng tôi sẽ tạo một tài khoản trên https. //www. npmjs. com/ (chỉ khi chúng tôi chưa có). Sau đó, trên máy phát triển cục bộ, chúng tôi thực hiện lệnh npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 26. Điều này sẽ yêu cầu chúng tôi nhập tên người dùng, mật khẩu và email. Sau khi nhập, chúng tôi đã sẵn sàng xuất bản góiChỉ cần gọi npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 27 bên trong thư mục gói và chúng ta có thể thấy gói được xuất bản lên kho lưu trữ npmBước 11. Sử dụng gói đã xuất bản trong htmlMột điều tuyệt vời khi xuất bản lên npm là gói của chúng tôi nhận được hỗ trợ CDN ngay lập tức. Xuất bản một gói lên npm làm cho nó tự động có sẵn thông qua các mạng phân phối nội dung khác nhau như Unpkg, CDNJS và JSDelivr. Chúng ta có thể chọn bất kỳ trong số này. Ví dụ: nếu chúng tôi quyết định sử dụng unpkg, chúng tôi có thể truy cập phiên bản umd js của gói của chúng tôi như thế này https. //giải nén. com/listtree/dist/listree. uhm. tối thiểu. js. Chúng tôi có thể kiểm tra điều này bằng cách sửa đổi cả url thẻ css và js trong tệp html mẫu của chúng tôi để trỏ đến liên kết CDN này thay vì tệp cục bộ và chúng tôi sẽ thấy rằng chức năng vẫn hoạt động như mong đợi Vì vậy, chúng tôi đã tạo và xuất bản một gói lên kho lưu trữ NPM và sử dụng thành công gói tương tự trong một ứng dụng. Điều đó kết thúc hướng dẫn này. Mã của gói được tạo cho hướng dẫn này có sẵn tại https. //github. com/SuryaSankar/listree. Vui lòng xem xét gắn dấu sao cho repo nếu bạn thấy gói hoặc hướng dẫn này hữu ích. Bản thân gói này có sẵn để sử dụng trong npm dưới tên npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 34 tại đây. Bạn có thể cài đặt và sử dụng nó chỉ bằng cách gọi npm install --save-dev rollup rollup-plugin-scss rollup-plugin-terser 29 trong dự án của bạn |