• About
  • Advertise
  • Privacy & Policy
  • Contact
DevZone
  • Home
  • News
  • Dev
    • All
    • Algorithm
    • Architecture
    • Database
    • Design
    • DevOps
    • IoT
    • Network
    • Test
    • Web
    Phương thức xử lý mảng trong javascript

    Phương thức xử lý mảng trong javascript

    Bảo vệ content, chống copy nội dung web!

    Bảo vệ content, chống copy nội dung web!

    Lưu ý mệnh đề NOT IN trong SQL

    Lưu ý mệnh đề NOT IN trong SQL

    SOLID Principles: Dependency Inversion Principle

    SOLID Principles: Dependency Inversion Principle

    Solid Principles: Interface Segregation Principle

    Solid Principles: Interface Segregation Principle

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    IPC – Đằng sau sự thành công của Chromium

    IPC – Đằng sau sự thành công của Chromium

    Dựng layout website với CSS Grid Layout

    Dựng layout website với CSS Grid Layout

    Golang cơ bản (p1)

    Golang cơ bản (p1)

    Trending Tags

    • Idea
    • Lifestyle
    No Result
    View All Result
    • Home
    • News
    • Dev
      • All
      • Algorithm
      • Architecture
      • Database
      • Design
      • DevOps
      • IoT
      • Network
      • Test
      • Web
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      Bảo vệ content, chống copy nội dung web!

      Bảo vệ content, chống copy nội dung web!

      Lưu ý mệnh đề NOT IN trong SQL

      Lưu ý mệnh đề NOT IN trong SQL

      SOLID Principles: Dependency Inversion Principle

      SOLID Principles: Dependency Inversion Principle

      Solid Principles: Interface Segregation Principle

      Solid Principles: Interface Segregation Principle

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      IPC – Đằng sau sự thành công của Chromium

      IPC – Đằng sau sự thành công của Chromium

      Dựng layout website với CSS Grid Layout

      Dựng layout website với CSS Grid Layout

      Golang cơ bản (p1)

      Golang cơ bản (p1)

      Trending Tags

      • Idea
      • Lifestyle
      No Result
      View All Result
      DEVZONE
      No Result
      View All Result
      Home Dev

      Tìm hiểu về Composer.json Schema (phần 1)

      kimtung by kimtung
      March 30, 2020
      in Dev, Web
      0
      Tìm hiểu về Composer.json Schema (phần 1)

      Khi chúng ta xây dựng các hệ thống hay gói công cụ (package) bằng ngôn ngữ lập trình php, hẳn tất cả các lập trình viên đã sử dụng hoặc chí ít cũng từng thấy qua file composer.json. Một file không thể thiếu và luôn hiện diện trang trọng ở thư mục root của các dự án. Vậy tại sao nó lại ở đó và thành phần trong nó bao gồm những thông tin gì? Chúng ta cùng nhau đi tìm hiểu nhé!  

      Để trả lời cho câu hỏi đầu tiên, tại sao nó lại ở đó?  (Thư mục root của framework, project, package…). Chúng ta hãy cùng tìm hiểu về composer.

      Composer là một tool, dùng để quản lý các gói, thư viện  mà dự án của bạn đang sử dụng.  Nó quản lý việc cài đặt, cập nhật sửa đổi các gói liên quan một cách tập trung và dễ dàng.

      Composer không quản lý giống như yum hay apt trên hệ thống unix. Nó quản lý các gói trên từng dự án cụ thể và cài đặt chúng trong thư mục vendor của dự án. Theo mặc định, nó sẽ không cài đặt bất cứ thứ gì toàn cục, gây ảnh hưởng đến các dự án khác. Tuy nhiên, nó cũng hỗ trợ khi bạn muốn cài đặt một gói nào đó mà sử dụng cho tất cả các project với chỉ một lần cài đặt (toàn cục).

      Khi project của bạn sử dụng và phụ thuộc vào một gói nào đó, gói đó lại sử dụng và phụ thuộc vào một gói khác. Cứ như thế các gói cứ phụ thuộc chồng chéo với nhau. Chính vì vậy  composer.json  luôn được đặt ở thư mục root để xác định nó là gói chính (root package). Và nó sẽ quản lý các gói liên quan, giải quyết các vấn đề chồng chéo, conflict… giúp dự án của bạn vận hành được trơn tru mà không phải quan tâm đến các package liên quan nó dùng những thứ gì.

      Composer.json được thiết kế có chuẩn định dạng chung. Và có thể dùng lệnh validate để xác thực file composer.json của bạn đã đúng chuẩn hay chưa. Để xem chi tiết hơn về Schema  Json  ta có thể theo dõi ở đây https://getcomposer.org/schema.json.

      Thành phần chính trong compose.json

      Name: Là tên của gói, gồm 2 phần, phần đầu là tên nhà cung cấp, phần 2 là tên dự án và được phân tách bằng dấu ‘/’.  Ví dụ:

      • monolog/monolog
      • igorw/event-source

      Description: Là chỗ để bạn mô tả ngắn chức năng, nhiệm vụ và sứ mệnh mà bạn muốn package của bạn gánh vác. Nó chỉ được viết trên một dòng duy nhất dù ngắn hay dài. 

      Name và Description là 2 trường yêu cầu bắt buộc phải có trong file composer.json. Nó có ý nghĩa quan trọng khi gói được publish ra cộng đồng.

      Tiếp đến là một số trường có tùy chọn là có hoặc không:

      Version: là nơi bạn đánh dấu phiên bản package.

      Type:  mặc định là library. Composer hỗ trợ 4 loại: library, project, metapackage, composer-plugin. Ngoài ra chúng ta cũng có thể tự định nghĩa type cho riêng mình.

      Keywords: Chứa những từ khóa liên quan đến package của bạn, hỗ trợ cho việc cộng đồng tìm kiếm package này trên https://packagist.org.

      License: Giấy phép của package, có thể chứa một hoặc nhiều giấy phép khác nhau. Ví dụ:

      {
          "license": "MIT"
      }
      {
          "license": [
             "LGPL-2.1-only",
             "GPL-3.0-or-later"
          ]
      }
      {
          "license": "(LGPL-2.1-only or GPL-3.0-or-later)"
      }
      

      Authors: chứa thông tin về tác giả của package, bao gồm name, email, homepage, role. Nó có thể chứa một hoặc nhiều tác giả.

      Package links:

      Nó chứa một đối tượng bao gồm các tên package mà root package đang sử dụng.

      Require:  Liệt kê các package mà root package yêu cầu sử dụng. Các package này sẽ được cài đặt nếu root package đáp ứng được hết các yêu cầu của package con.

      Require-dev:  Liệt kê các gói trong quá trình phát triển root package hoặc trong quá trình chạy thử nghiệm. Cả 2 lệnh install và update đều hỗ trợ tùy chọn –no-dev để loại bỏ các gói dev này.

      Phiên bản trong require:

      "require": {
          "vendor/package": "1.3.2", // cài đặt phiên bản 1.3.2
      
          // >, <, >=, <= | giới hạn phiên bản
          "vendor/package": ">=1.3.2", // cài đặt phiên bản lớn hơn hoặc từ 1.3.2 trở lên
          "vendor/package": "<1.3.2", // cài đặt phiên bản nhỏ hơn 1.3.2
      
          // * | Ký tự đại diện
          "vendor/package": "1.3.*", // >=1.3.0 <1.4.0
      
          // ~ | Cho phép chữ số cuối được chỉ định tăng lên
          "vendor/package": "~1.3.2", // >=1.3.2 <1.4.0
          "vendor/package": "~1.3", // >=1.3.0 <2.0.0
      
          // ^ | Không cho phép cập nhật mới khi gói chính đã được bên cung cấp thay đổi
          "vendor/package": "^1.3.2", // >=1.3.2 <2.0.0
          "vendor/package": "^0.3.2", // >=0.3.2 <0.4.0 // Ngoại trừ nếu phiên bản chính là 0
      }

      Đây mới chỉ là phần đầu của cấu trúc file composer.json.

      Ở bài viết tiếp theo mình sẽ trình bày các phần còn lại và sẽ tập trung phân tích Autoload và các chuẩn Autoload file, thành phần quan trọng để mapping các class trong package.

      Xin cảm ơn.

      Thả tim (4 lượt thả tim)
      Loading...
      Previous Post

      Corona: những điều có thể bạn chưa biết

      Next Post

      Docker là gì?

      kimtung

      kimtung

      Next Post
      Docker là gì?

      Docker là gì?

      Leave a Reply Cancel reply

      Your email address will not be published. Required fields are marked *

      Recent News

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      July 25, 2020
      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      June 26, 2020
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      May 31, 2020
      Lợi ích của việc tập thể dục thường xuyên

      Lợi ích của việc tập thể dục thường xuyên

      May 25, 2020
      DEVZONE

      Browse by Category

      • Algorithm
      • Architecture
      • Database
      • Design
      • Dev
      • DevOps
      • Idea
      • IoT
      • Lifestyle
      • Network
      • News
      • Test
      • Uncategorized
      • Web
      • About
      • Advertise
      • Privacy & Policy
      • Contact

      © 2019 Devzone

      No Result
      View All Result

      © 2019 Devzone