Câu hỏi Làm thế nào để xác định đường dẫn cài đặt Composer?


Tôi có định nghĩa này:

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "symfony/sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "symfony/sfGuardPlugin": "4.0.*"
    }
}

Tôi đang sử dụng Symfony 1 và tôi muốn cài đặt chúng trên plugins/sfGuardPlugin/. Làm thế nào để tôi xác định điều này?


76
2017-08-09 12:23


gốc




Các câu trả lời:


Có vẻ như bạn có thể xác định vendor dir được thứ gì khác (plugins trong trường hợp của bạn):

{
    "config": {
        "vendor-dir": "plugins"
    }
}

Sau đó, bạn có thể đổi tên tên gói thành không có một thư mục cấp độ bên trong, như:

        "package": {
            "name": "sfGuardPlugin",

Vậy bạn composer.json sẽ trông như thế này:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

Chỉnh sửa

Sử dụng cấu hình này, bạn sẽ nhận được đường dẫn (đó là tất nhiên không tốt cho symfony):

plugins / sfGuardPlugin / sfGuardPlugin-4.0.2 /

Tôi đã tìm thấy cách giải quyết với vấn đề này composer.json:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "source": {
                    "url": "http://svn.symfony-project.com/plugins/sfGuardPlugin/",
                    "type": "svn",
                    "reference": "branches/1.3/"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

115
2017-08-09 12:39



Nice, cũng có thể bằng cách nào đó tôi làm cho nó để thư mục trích xuất không đi sâu như bây giờ: plugins/sfGuardPlugin/sfGuardPlugin-4.0.2/thay vào đó tôi muốn plugins/sfGuardPlugin? - Tower
Vâng, chỉ cần thấy điều đó. Tôi đang cố gắng với một loại khác (thay vì tar). - j0k
Điều đó hoạt động tốt - vì vậy họ vẫn có một kho lưu trữ sau khi tất cả :) - Tower
là có một cách để chỉ định các nhà cung cấp dir cho một số gói cụ thể chỉ, và để những người khác như mặc định? - mr1031011
Đây là một câu trả lời tuyệt vời và được nghiên cứu, nhưng không rời khỏi V. của Adam, bởi vì nó có vẻ chính thức hơn, oh và dễ dàng ;-) - mTorres


Bạn cũng có thể dùng nhà soạn nhạc / người cài đặt, một trình cài đặt thư viện trình soạn thảo đa khung công tác với loại gói "symfony1-plugin". Đây là những gì tệp composer.json của tôi trông như thế, để nó có thể cài đặt cả Symfony 1.4 (trong lib / vendor) và các plugins trong (/ plugins):

{
    "config": {
        "vendor-dir": "lib/vendor"
    },
    "repositories": {
        "symfony": {
            "type": "package",
            "package": {
                "name": "symfony/symfony1",
                "version": "1.4",
                "dist": {
                    "url": "https://github.com/symfony/symfony1/zipball/1.4",
                    "type": "zip"
                }
            }
        },
        "sfResquePlugin" : {
            "type": "package",
            "package": {
                "name": "devpips/sfResquePlugin",
                "type": "symfony1-plugin",
                "version": "0.1",
                "dist": {
                    "url": "https://github.com/devpips/sfResquePlugin/zipball/master",
                    "type": "zip"
                }
            }
        }
    },
    "require": {
        "composer/installers": "dev-master",
        "symfony/symfony1": "1.4",
        "devpips/sfResquePlugin":"0.1"
    }
}

25
2017-08-19 00:16





Xem COMPOSER_VENDOR_DIR biến môi trường.

Bằng cách thiết lập var này, bạn có thể làm cho Composer cài đặt các phụ thuộc vào một thư mục khác với nhà cung cấp.

Có thể hữu ích trong trường hợp bạn muốn ghi đè điều này trong một môi trường cụ thể như lang thang nơi bạn không muốn điều này nằm trong một thư mục được chia sẻ.

Và như J0k đã nói, có vendor-dir trong config phần của composer.json

Mặc định cho nhà cung cấp. Bạn có thể cài đặt các phụ thuộc vào một thư mục khác nếu bạn muốn. $ HOME và ~ sẽ được thay thế bằng đường dẫn của thư mục chính của bạn trong thư mục vendor-dir và tất cả các tùy chọn * -dir bên dưới.


5
2018-04-18 18:48