將常用的 Package 與 Codebase 打包成 Project Template

PhpStorm 2016.2 提供一個新功能,可以將專案打包成 project template,以後新建專案時,可以選擇此 template 直接重建專案,如常用的 package 與 codebase 可以先打包好,將來要建立新專案就很方便。

Motivation


我在寫部落格範例時,有些東西是必要的,如 IDE Helper,SQLite 環境,PHPUnit 單元測試環境,以前每次寫一個範例,就得重新安裝這些 package 與 codebase,很花時間,有了 project template之後,只要設定一次即可,以後部落格範例都可以套用此 project template,非常方便。

Version


PHP 7.0.8
Laravel 5.2.41
PhpStorm 2016.2

建立 Project Template


Tools ->Save Project as Template

任何你目前的 Laravel 專案,都可以存成 project template。

輸入 project template 名稱,不必與原來 project 名稱相同,只要你方便識別即可。

建立新 Project


選擇 Create New Project

選擇 User-definedLaravel52Blog,這是我們剛剛所建立的 project template。

Location 輸入你的專案路徑。

重建 Vendor 目錄


如同從 GitHub 下載的 Laravel 專案一樣,vendor 目錄下是空的,你有兩種方法重建 vendor 目錄。

  • composer install : 根據 composer.lock 重建 vendor 目錄,所有 package 版本會與原 project template 完全一樣。
  • composer update : 根據 composer.json 重建 vendor 目錄,所有 package 版本會升級成與原 project template 相容的版本。

兩種方式都可以,端看你的需求而定,我的需求是想升級到 Laravel 最新的版本,所以下 composer update

composer update 執行完後,vendor 目錄已經補齊。

設定 Excluded Folders


PhpStorm -> Preferences -> Directories

若你有設定 Excluded Folders,將所有目錄刪除。1 1若你由 PhpStorm 幫你建立 Laravel 專案,他會幫你設定 Excluded Folders,若自己由 Composer 建立 Laravel 專案,則不會有此設定。

刪除完後,只留下 TestsSourcesResource Root 三個目錄設定。

設定 PHP 7


PhpStorm -> Preferences -> Languages & Frameworks -> PHP

  • PHP language level : 設定為 7
  • Interpreter : 設定 PHP 7 interpreter 位置。

設定 PHPUnit


PhpStorm -> Preferences -> Languages & Frameworks -> PHP -> PHPUnit

  • Use Composer autoloader : 選擇專案目錄下的 vendor/autoload.php
  • Default configuration file : 選擇專案根目錄下的 phpunit.xml

單元測試


確認專案已經可以正常執行。

Conclusion


  • Project template 並不包含原專案的 git repository,也就是你必須重新建立一個新的 git local repository。
  • 透過這種方式,建立新專案時將更為方便,直接套用你常用的 package 與 codebase。

Sample Code


完整的範例可以在我的 GitHub 上找到。

2016-07-23