您在這裡

Composer在Drupal 8 扮演的角色

(圖片擷取自:http://italomairo.italomairo.com/en/node/251)

前言

Composer在Drupal 8 裡面超級重要,但是對於從Drupal 7上來的人來說,往往不明白Composer的重要與扮演的角色。因此,整理這篇文章來跟大家分享,希望能夠幫助不熟悉的人釐清Composer在Drupal 8的觀念。當然,如果描述的不好且不完整的地方,也希望各路高手一同協助。

Composer是什麼?

取自Composer | 正體中文文件

Composer 是 PHP 的相依管理工具。 它能讓你宣告專案需要的依賴函式庫, 並為你在專案中管理(安裝/更新)它們。

從上面的描述可以得知,我們用Composer可以整合很多外部需要用的其他函式庫,並且可以通過Composer來進行更新、安裝。對於專案本身來說,是一個非常好用的工具,可以輕鬆的讓一個專案,快速擁有眾多其他套件或函式庫的功能。

相依管理工具

如何判斷需要使用Composer呢?

假設:

  1. 如果您現在有一個專案,需要引用很多的函數庫
  2. 每一個函數庫可能還引用了其他的和書庫

Composer做些什麼:

  1. 可以通過Composer來宣告需要用到的相依函數庫
  2. 需要什麼版本的函數庫都可以通過Composer直接下載安裝到這個專案內,當然還包括了必要的更新

如果,您想要了解更清楚Composer,可以觀看官方的網站,如果想要安裝Composer,可以觀看這裡

Drupal8 用Composer做些什麼呢?

在D8中使用Composer有眾多的好處,例如用Composer來下載核心需要用到的相依套件:Symfony相關套件與Guzzle等等。但簡單來說,使用Composer可以讓我們輕鬆管理一堆相依關係的套件,並且還可以做好每個元件的版本設定,進行更新與驗證。當然,一開始可能會有一些不習慣~可是這樣的改變,將會讓D8網站走得更遠,也更有彈性:)

Composer在Core裡面的影響

D8之中,所有核心的相依套件是沒有Commit(通過git)到Drupal核心Repo的。因此,在D8的檔案目錄之中,不會有看到任何的vendor資料夾(Vendor資料夾是composer安裝套件的目錄),取而代之的是有composer.json與composer.lock檔案,裡面描述了所有的相依套件,這個則是有commit進入到Drupal核心的Repo之中。當然,也因為有這兩個檔案,D8才能順利下載安裝並且運行。

但Drupal官方為了方便起見,還是有把這些相依套件一起打包到官方網站的下載地方。因此,如果今天你是從官方網站下載D8安裝程式,或是使用Drush來下載安裝D8,這些相依套件是直接安裝進去可以運行的。

Composer在Drupal 8 扮演的角色

以下是D8的官方文件寫到,三種不同角色對於Composer的看法

  1. D8的架構者:我們會使用Composer來管理整個Drupal網站所有的套件。

    舉例來說:我們會使用Composer來進行D8核心的更新、模組更新、模板更新。

    ps:如果要了解更詳細資訊,可以看這裡

  2. D8的模組開發者:我們會使用Composer來整合所有相依的套件整合到自己客製化的模組或模板。

    這個部分就相對來說專業許多,如果想要更進一步了解,可以看這裡

  3. D8的維護者:在維護模組/模板時,我們會通過Composer來管理相依套件

    如果你是D8的某些模組/模板的維護者,對於相依套件這一塊,通常就會把額外需要用的套件,加入到模組的info.yml之中。

結論

通過上面的描述,我想大家大概都了解到Composer是非常重要的,他在D8扮演者關鍵的角色,也因為有了Composer,D8可以延伸整合各個套件,真的是超級方便。如果有興趣,趕快開始安裝Composer吧~