OctoberCMS에 Composer에서 비 Composer 지원 플러그인 설치

개요



아래에 해당하는 OctoberCMS 플러그인은 그대로 Composer에서 제대로 설치할 수 없으므로 대처가 필요하다.

  • Packagist에 등록되지 않음
  • 소스 코드에 composer.json이 포함되지 않음
  • composer.json을 포함하지만 적절한 패키지 정의가 아닙니다

  • 내 프로젝트 (또는 내 플러그인)의 composer.json에서 소스를 가져올 위치를 지정하고 플러그인이 정의해야하는 정보를 대신 정의하면 Composer에서 설치 및 관리하는 것 수 있습니다.

    취득 장소 지정



    프로젝트 또는 플러그인의 composer.json에 repositories를 정의하여 소스 코드를 가져올 위치를 지정합니다. 이것에 의해 Packagsit에 등록되어 있지 않아도 다운로드할 수 있게 된다.
    {
        ...
        "require": {
            ...
            "simplicitylab/blogfeaturedvideo": "dev-master",
            ...
        },
        "repositories": [
            ...
            {
                "url": "https://github.com/simplicitylab/blogfeaturedvideo",
                "type": "git",
            },
            ...
    

    이제 composer update 그러면 GitHub의 master 브랜치에서 소스를 가져옵니다. 그러나 이것이라면 vendor 디렉토리에 설치되어 플러그인으로는 인식되지 않습니다.

    플러그인으로 인식



    플러그인으로 인식하게 하려면, 자신의 composer.json으로 대신에 그 플러그인의 정보를 정의해 준다. 여기의 예라면, 최종적으로는 아래와 같이 하면, 플러그인 디렉토리에 인스톨되어 컴포넌트 년이나 모델 등이 인식되게 된다.
    {
        ...
        "require": {
            ...
            "simplicitylab/oc-blogfeaturedvideo-plugin": "dev-master",
            ...
        },
        "repositories": [
            ...
            {
                "type": "package",
                "package": {
                    "name": "simplicitylab/oc-blogfeaturedvideo-plugin",
                    "type": "october-plugin",
                    "version": "dev-master",
                    "source": {
                        "url": "https://github.com/simplicitylab/blogfeaturedvideo",
                        "type": "git",
                        "reference": "master"
                    }
                }
            },
            ...
    

    대체로 보면 알겠지만, "type": "october-plugin" 를 지정하는 것으로 적절하게 플러그인 디렉토리에 인스톨 해 준다.

    그리고 주의해야 할 것은 name로, 네임스페이스와 관련된 디렉토리 구성을 결정하는 것이므로, 네임스페이스를 확인해 결정할 필요가 있다.

    이 플러그인의 경우 소스 코드를 보면 네임 스페이스는 다음과 같습니다.
    namespace Simplicitylab\BlogFeaturedVideo;
    

    따라서 디렉토리 구성은 plugins/simplicitylab/blogfeaturedvideo이어야합니다.

    따라서 작자명은 simplicitylab. 또한, 플러그인명은 OctoberCMS의 네이밍 규약으로부터 oc- 접두사와 -plugin 포스트픽스를 붙인다.

    따라서 패키지 이름은 simplicitylab/oc-blogfeaturedvideo-plugin입니다. 모두 소문자. 이것을 위와 같이 namerequire의 곳에 기술한다.
    이 플러그인은 비교적 그대로의 패키지명이 되었지만, 일부는 GitHub상의 리포지토리명이 패키지명과 크게 다른 경우도 있다.

    소스 코드에 composer.json이 포함된 경우



    대신 패키지 정의를 해 주면 원래 있던 composer.json이 읽히지 않는 것 같다.
    즉, 원래 있던 composer.json에 종속 패키지가 정의되어 있었던 경우는, 이것들을 작성한 대신의 패키지 정의에 전기해 줄 필요가 있다. 작성한 패키지 정의의 package 안에 require를 전기한다.

    Class not found가 되는 경우





    파일이 존재하고 있는데, 클래스를 찾을 수 없다는 에러가 발생했을 경우, 재차, 이전의 순서로 마음대로 결정한 작자명과 패키지명이 모두 소문자가 되어 있는지 확인한다.

    작자명과 패키지명 작자명과 패키지명이 캬멜 케이스 등으로 되어 있으면, 이와 같은 에러가 발생하는 것 같다.

    좋은 웹페이지 즐겨찾기