วิธีการใช้ส้อมกับนักแต่งเพลง


172

นี่คือผู้แต่งของฉันฉันต้องการใช้ส้อมของ lessphp ในโครงการ Github

 "repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "nodge/lessphp",
        "source": {
            "url": "https://github.com/Nodge/lessphp.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "classmap": ["lessc.inc.php"]
        }
    }
}],
"require": {
    "php": ">=5.3.3",
    "nodge/lessphp": "dev-master"
},

แต่ฉันมีข้อผิดพลาดนี้เมื่อทำการอัปเดต:

nodge / lessphp dev-master -> ไม่พบแพ็คเกจที่ตรงกัน

ฉันไม่รู้ว่าจะต้องใช้ส้อมนี้อย่างถูกต้อง ...

ข้อเสนอแนะใด ๆ

คำตอบ:


228

วิธีที่ใช้กันมากที่สุด (และง่ายกว่า) คือการใช้ที่เก็บข้อมูล VCS

สิ่งที่คุณต้องทำคือเพิ่มทางแยกของคุณเป็นที่เก็บและอัปเดตข้อ จำกัด เวอร์ชันเพื่อชี้ไปที่สาขาที่คุณกำหนดเอง ชื่อสาขาของคุณเองจะต้องdev-นำหน้าด้วย

ตัวอย่างสมมติว่าคุณได้ทำการแก้ไข monolog เพื่อแก้ไขบั๊กในสาขา bugfix:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

โปรดทราบว่าคุณไม่ได้เปลี่ยนคำสั่งต้องการยกเว้นเพื่อระบุสาขาบั๊กของคุณ คุณยังคงอ้างอิงแพ็คเกจอัปสตรีม ( monolog/monolog) ไม่ใช่ส้อมส่วนตัว ( igorw/monolog) คุณสามารถอ่านรายละเอียดได้ในเอกสาร


6
ดูเหมือนว่านี่จะใช้งานไม่ได้กับgithub.com/Polycademy/purlซึ่งเป็นทางแยกของgithub.com/jwage/purlฉันได้พยายาม: "repositories": [{"type": "vcs", "url ":" git@github.com: Polycademy / purl.git "}] และ" ต้องการ ": {" jwade / purl ":" dev-master ",} แต่ฉันได้รับ: ปัญหา 1 - แพคเกจที่ร้องขอ jwade ไม่พบ / purl ในรุ่นใด ๆ อาจมีการพิมพ์ผิดในชื่อแพ็คเกจ
CMCDragonkai

11
@CMCDragonkai ลองใช้composer show jwade/purl -vมันควรจะบอกว่าทำไมมันถึงไม่สนใจรุ่น dev-master ถ้ามันทำ
Seldaek

4
@seldaek คุณช่วยฉันด้วย! ขอบคุณ! (ส้อมของฉันถูกเรียกว่า dev-dev- .. ) ไม่รู้ว่าการตั้งชื่อนั้นเป็นไปโดยอัตโนมัติ
Miguel Stevens

15
"อ่านเอกสาร" เป็นคำตอบที่ไม่ดีคำตอบที่ดีกว่าก็คือยกตัวอย่างที่เป็นรูปธรรม
oskarth

7
ยินดีที่จะเตือนเกี่ยวกับการไม่อ้างอิงถึงส้อมส่วนตัว สิ่งนี้ช่วยประหยัดวันของฉัน +1
edrian

42

ใช้งาน VCS:

"name": "test/test",
"repositories": [{
    "type": "vcs",
    "url": "http://github.com/Nodge/lessphp"
}],
"require": {
    "leafo/lessphp": "dev-master"
},

แต่ถ้าฉันต้องการโมดูลที่มีสิ่งนี้composer.jsonมันไม่ทำงาน มันติดตั้งโครงการเดิมไม่ใช่ทางแยก

ตัวอย่าง

"name": "example/example",
"require": {
    "test/test": "dev-master"
},

ฉันควรพูดถึงที่เก็บอีกครั้ง เป็นเรื่องปกติหรือไม่


ปัญหาเดียวกันเดียวกันที่นี่
Aysennoussi

ลบโมดูลด้วยตนเองโดยใช้ "rm -rf" แล้ว "อัพเดทผู้แต่ง" ที่ทำงานให้ฉัน
Hubert Perron

3
ฉันเคยใช้ส้อมหนึ่งโหลและมันก็ไม่ได้ผล นี่เป็นวิธีแก้ปัญหาการทำงาน: stackoverflow.com/a/27970559/183904
Julien

4
@Julien ผมเคยใช้เพียงวิธีนี้และมันทำงานเหมือนจับใจ ... ความเอกสารมีความชัดเจนมากคุณต้องจำไว้เพียงที่จะนำdev-คำนำหน้าชื่อในสาขาที่กำหนดเองของคุณเมื่อต้องใช้แพคเกจในคำถาม
mTorres

2
ทำงานให้ฉัน ... แต่ฉันต้องการพูดถึงว่าฉันต้องใช้ https: // สำหรับ URL
plong0

33

หากคุณไม่สามารถรับคำตอบ @Nilime เพื่อทำงานให้กับคุณได้ตรวจสอบให้แน่ใจว่าสาขาของคุณใช้สาขาอื่น

ตัวอย่างเช่นผลักดันการเปลี่ยนแปลงของคุณไปยังสาขาบนส้อมของคุณที่เรียกว่าmy-bugfixอย่าเพิ่มdev-คำนำหน้าในชื่อสาขาของคุณ แต่ใน composer.json ของคุณคุณต้องเพิ่มมัน ไฟล์เพลงของคุณจะมีลักษณะดังนี้:

"repositories":
[
    {
        "type": "vcs",
        "url": "http://github.com/yourname/packageName"
    }
],
"require": {
    "owner/packageName": "dev-my-bugfix"
},

1
นี่เป็นคำอธิบายที่ชาญฉลาดและชัดเจนสำหรับฉัน! ขอบคุณ !
Dominik

1
แต่จะเป็นอย่างไรถ้าเป็นทางแยกของคนอื่น ดูตัวอย่างได้ที่นี่
abbood

นอกจากนี้nameฟิลด์ในcomposer.jsonไฟล์ของที่เก็บแบบแยกของคุณควรอยู่ในสภาพเดียวกันกับเจ้าของดั้งเดิม
NecipAllef

11

ฉันได้ลองตัวเลือกมากมาย แต่หลังจากได้รับโพสต์นี้ฉันเห็นแสงและมันทำงานได้สมบูรณ์แบบ

นี่คือสิ่งที่คุณต้องทำ:

1- ที่เก็บแยก

2- สร้างสาขาและทำการแก้ไขที่จำเป็น

3- เพิ่มฉลากที่เก็บลงใน composer.json ของคุณ

"repositories": [

        {
            "type": "vcs",
            "url": "https://github.com/user/yourforkname"
        }
    ]

4- ในบรรทัดคำสั่งภายในโครงการของคุณต้องการส้อมของคุณเช่นนี้:

composer require vendor/packagename:dev-branchname

และVoilá !!

คุณมีรุ่นส้อมของคุณทำงาน


7

ตามเอกสารนักแต่งเพลง http://getcomposer.org/doc/05-repositories.md#vcsก็เพียงพอที่จะระบุที่เก็บต้นฉบับ (ไม่ใช่ทางแยก) ในrequire"nodge / lessphp" ในกรณีของคุณ) นักแต่งเพลงจะติดตั้งส้อมของคุณ (ดูรหัสในผู้ขาย)


5

ดังนั้นนี่คือ 2019 และคำตอบส่วนใหญ่ที่นี่ถูกต้องแล้ว

หากคุณพบว่าตัวเองอยู่ในสถานการณ์ที่คุณต้องการสาขาเฉพาะของทางแยก (ที่คุณสร้างขึ้น) ให้ผู้แต่งรายการรุ่น / แท็กที่มีอยู่ก่อน สิ่งนี้ช่วยฉันได้หลายครั้ง

ตัวอย่างเต็มรูปแบบพร้อมspatie/laravel-backupแพคเกจ

ก่อนอื่นให้เพิ่มrepositoriesคีย์ไปที่ composer.json ด้วย url ของส้อมของคุณ

"repositories": [{
   "type": "vcs",
   "url": "https://github.com/holymp2006/laravel-backup"
 }]

รับรุ่น / แท็กที่มีอยู่

composer show "spatie/laravel-backup" --all

เลือกเวอร์ชันที่คุณต้องการจากversionsเอาต์พุตเทอร์มินัลจากนั้นต้องใช้เวอร์ชันนั้น

composer require spatie/laravel-backup:v5.x-dev

2

ฉันมักจะเพิ่มโหนด "dist" ลงในข้อกำหนดแพ็คเกจ ฉันไม่เคยมีปัญหาในการใช้วิธีนี้

ฉันจำไม่ได้ว่าฉันได้รับเคล็ดลับนี้จากที่ไหนสำหรับคำอธิบายเพิ่มเติม

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "version": "dev-master",
                "name": "nodge/lessphp",
                "source": {
                    "url": "https://github.com/Nodge/lessphp.git",
                    "type": "git",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": ["lessc.inc.php"]
                },
                "dist": {
                    "url": "https://github.com/Nodge/lessphp/archive/master.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "require": {
        "nodge/lessphp": "*"
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.