สมมติว่าฉันได้รวบรวมโมดูลโหนดพร้อมกับตัวแก้ไขข้อบกพร่องและฉันต้องการใช้เวอร์ชันคงที่ของฉันในสาขาฟีเจอร์แน่นอนจนกว่าจะมีการรวมและแก้ไขข้อผิดพลาด
ฉันจะอ้างอิงรุ่นที่แก้ไขในส่วนdependencies
ของฉันได้package.json
อย่างไร
สมมติว่าฉันได้รวบรวมโมดูลโหนดพร้อมกับตัวแก้ไขข้อบกพร่องและฉันต้องการใช้เวอร์ชันคงที่ของฉันในสาขาฟีเจอร์แน่นอนจนกว่าจะมีการรวมและแก้ไขข้อผิดพลาด
ฉันจะอ้างอิงรุ่นที่แก้ไขในส่วนdependencies
ของฉันได้package.json
อย่างไร
คำตอบ:
จากเอกสาร npm :
git://github.com/<user>/<project>.git#<branch>
git://github.com/<user>/<project>.git#feature\/<branch>
ในฐานะของ NPM เวอร์ชั่น 1.1.65 คุณสามารถทำได้:
<user>/<project>#<branch>
git://github.com/<user>/<project>.git#feature/blah
ทำงานได้ แต่<user>/<project>.git#feature/blah
ไม่ได้ ... บางที regex ของพวกเขาจะต้องสูงกว่านี้เพื่อfeature/blah
พิจารณา นี่คือน.v1.4.28
ต่อความคิดเห็นของ @ dantheta:
ตั้งแต่ npm 1.1.65 URL Github สามารถเป็นผู้ใช้ / โครงการที่กระชับยิ่งขึ้น npmjs.org/doc/files/package.json.html คุณสามารถแนบสาขาเช่น user / project # branch
ดังนั้น
"babel-eslint": "babel/babel-eslint",
หรือสำหรับแท็ก v1.12.0 บน jscs:
"jscs": "jscs-dev/node-jscs#v1.12.0",
หมายเหตุถ้าคุณใช้ npm - บันทึกคุณจะได้รับคอมไพล์ที่ยาวขึ้น
จากhttps://docs.npmjs.com/files/package.json#git-urls-as-dependencies
Git URLs เป็น Dependencies
URL ของ Git สามารถอยู่ในรูปแบบ:
git: //github.com/user/project.git#commit-ish git + ssh: // ชื่อผู้ใช้ @ hostname: project.git # commit-ish git + ssh: //user@hostname/project.git#commit- ish git + http: //user@hostname/project/blah.git#commit-ish git + https: //user@hostname/project/blah.git#commit-ish
การกระทำ - ish สามารถแท็กใด ๆ , sha, หรือสาขาซึ่งสามารถจัดเป็นอาร์กิวเมนต์ในการชำระเงินคอมไพล์ ค่าเริ่มต้นคือต้นแบบ
URL ของ GitHub
ในเวอร์ชัน 1.1.65 คุณสามารถอ้างถึง URL ของ GitHub เป็นเพียง "foo": "user / foo-project" เช่นเดียวกับ URL git สามารถรวมคำต่อท้าย commit-ish ได้ ตัวอย่างเช่น:
{"name": "foo",
"version": "0.0.0",
"dependencies": {"express": "visionmedia / express", "mocha": "visionmedia / mocha # 4727d357ea"}}
หากคุณต้องการที่จะใช้devel
หรือfeature
สาขาหรือคุณยังไม่ได้เผยแพร่แพคเกจบางอย่างเพื่อรีจิสทรี NPM หรือคุณไม่สามารถเพราะมันเป็นโมดูลส่วนตัวแล้วคุณสามารถชี้ไปที่git://
URI แทนหมายเลขรุ่นในpackage.json
:
"dependencies": {
"public": "git://github.com/user/repo.git#ref",
"private": "git+ssh://git@github.com:user/repo.git#ref"
}
#ref
ส่วนจะเป็นตัวเลือกและมันอาจจะเป็นสาขา (ชอบmaster
) แท็ก (ชอบ0.0.1
) หรือบางส่วนหรือทั้งหมดกระทำ ID
ในรุ่นล่าสุดของ NPM คุณสามารถทำได้:
npm install gitAuthor/gitRepo#tag
หาก repo เป็นแพคเกจ NPM ที่ถูกต้องจะมีการใช้นามแฝงอัตโนมัติใน package.json ดังนี้:
{
"NPMPackageName": "gitAuthor/gitRepo#tag"
}
หากคุณสามารถเพิ่มสิ่งนี้ในคำตอบของ @justingordon ไม่จำเป็นต้องใช้นามแฝงด้วยตนเองในตอนนี้!
ถ้ามันช่วยทุกคนฉันลองทุกอย่างด้านบน (https กับโหมดโทเค็น) - และก็ยังไม่มีอะไรทำงาน ฉันไม่มีข้อผิดพลาด แต่จะไม่มีสิ่งใดติดตั้งใน node_modules หรือ package_lock.json ถ้าฉันเปลี่ยนโทเค็นหรือตัวอักษรใด ๆ ในชื่อ repo หรือชื่อผู้ใช้ ฯลฯ - ฉันได้รับข้อผิดพลาด ดังนั้นฉันรู้ว่าฉันมีโทเค็นที่ถูกต้องและชื่อ repo
ในที่สุดฉันก็รู้ว่าเป็นเพราะชื่อของการพึ่งพาที่ฉันมีใน package.json ไม่ตรงกับชื่อใน package.json ของ repo ที่ฉันพยายามดึง แม้การติดตั้ง npm --verbose ไม่ได้บอกว่ามีปัญหาใด ๆ ดูเหมือนว่าจะไม่สนใจข้อผิดพลาดในการขึ้นต่อกันที่ไม่มี
user/project
ที่สามารถจะกระชับมากขึ้น npmjs.org/doc/files/package.json.htmlคุณสามารถแนบสาขาเช่นuser/project#branch