Diasumsikan bahwa saya telah menulis modul untuk Node.js yang ingin saya rahasiakan. Saya tahu bahwa saya dapat (harus) menambahkan baris:
"private": "true"
ke package.json
file, dan saya juga tahu bahwa saya bisa npm install
modul ini menggunakan jalur sistem file atau tautan ke repositori git, termasuk GitHub.
Saya juga tahu bahwa saya dapat meletakkan jalur sistem file atau tautan ke git repo ke dalam package.json
, sehingga dependencies
bagian tersebut terlihat seperti ini:
"dependencies": {
"myprivatemodule": "[email protected]:..."
}
Yang saya inginkan sekarang bukan untuk menautkan ke versi terbaru, tetapi ke yang spesifik. Satu-satunya kemungkinan yang saya ketahui adalah menautkan ke komit tertentu menggunakan ID-nya. Tapi ini jauh lebih mudah dibaca dan lebih buruk dikelola daripada menggunakan nomor versi seperti 0.3.1
.
Jadi pertanyaan saya adalah: Apakah mungkin untuk menentukan nomor versi seperti itu dan membuat npm mencari repositori git untuk komit terbaru yang mencakup versi ini?
Jika tidak, bagaimana Anda mengatasi masalah ini di proyek Anda? Apakah Anda hidup dengan ID komit atau ada solusi yang lebih baik untuk ini?
git tag -a "1.0.0"
dan mendoronggit push --tags
, lalu saya menambahkan#v1.0.0
di akhirgit+ssh
ketergantungan. Tapinpm update
tidak ada yang terjadi.v
itu perlu. Setelah itu#
, fragmen harus cocok dengan nama lengkap tag (atau komitmen lainnya ) - dalam kasus Anda#1.0.0
,.npm i {owner}/{project}#{tag}
atau menambahkan"{library}": "github:{owner}/{project}#{tag}"
ke package.json daripada menggunakan[email protected]
ataugit://github.com
Jawaban yang diterima tidak berhasil untuk saya. Inilah yang saya lakukan untuk menarik paket dari github:
Atau menambahkannya secara manual di package.json:
sumber
"package": "git+https://github.com/username/package.git#commit"
#tag
yang biasanya menunjuk pada nomor versigit tag -a v1.0.1 && git push --tag && git push
seperti @Jonathan Lonowski juga katakan dalam komentar.Jika menurut versi Anda maksud suatu tag atau rilis, maka github menyediakan tautan unduhan untuk itu. Misalnya, jika saya ingin menginstal fetch versi 0.3.2 (ini tidak tersedia pada npm), maka saya tambahkan di
package.json
bawahdependencies
:Satu-satunya kelemahan jika dibandingkan dengan pendekatan hash komit adalah bahwa hash dijamin tidak mewakili kode yang diubah, sedangkan tag dapat diganti. Syukurlah ini jarang terjadi.
Memperbarui:
Saat ini pendekatan yang saya gunakan adalah notasi ringkas untuk ketergantungan yang dilayani GitHub:
Di mana komit dapat berupa komit, seperti tag. Dalam kasus GitHub Anda bahkan dapat menjatuhkan inisial
github:
karena ini adalah default.sumber
Contoh komentar saya untuk @qubyte di atas dicincang, jadi inilah sesuatu yang lebih mudah dibaca ...
Metode @surjikal yang dijelaskan di atas berfungsi untuk komit cabang, tetapi tidak berfungsi untuk komit pohon yang saya coba sertakan.
Mode arsip juga berfungsi untuk komit. Misalnya, ambil @ a2fbf83
npm :
benang :
format :
Inilah pohon komit yang memerlukan
/archive/
mode:untuk komit vuex terkait
sumber
Perintah ini menginstal paket npm
username/package
dari komit git tertentu:Inilah
3d0a21cc
8 karakter pertama dari hash komit.sumber
Saya jelaskan di sini masalah yang saya hadapi ketika dijalankan
npm install
- paket tidak muncul dinode_modules
.Masalahnya adalah bahwa
name
nilai dalampackage.json
paket yang diinstal berbeda dari nama paket yang diimpor (kuncipackage.json
dari proyek saya).Jadi, jika nama proyek diinstal Anda
some-package
(nilai nama di nyapackage.json
) maka dalampackage.json
menulis proyek Anda:"some-package": "owner/some-repo#tag"
.sumber
name
persyaratan ini tidak sering disebutkan di internet .. (bukan berarti saya bisa menanggungnya, setidaknya).npm install --save git+https://<remote-github-repo-url>
adalah cara yang cukup aman untuk tidak terkena masalah ini lagi di masa depan.Saya perlu menjalankan dua versi tfjs-core dan menemukan bahwa keduanya perlu dibangun setelah diinstal.
package.json:
Kemudian:
Dan akhirnya, untuk menggunakan perpustakaan:
Ini bekerja dengan baik tetapi tentu saja #hoodrat
sumber
Jika Anda melakukan ini dengan lebih dari satu modul dan ingin memiliki lebih banyak kontrol atas versi, Anda harus melihat memiliki registri npm pribadi Anda sendiri.
Dengan cara ini Anda dapat npm menerbitkan modul Anda ke registri npm pribadi Anda dan menggunakan entri package.json dengan cara yang sama seperti yang Anda lakukan untuk modul publik.
https://docs.npmjs.com/files/package.json#dependencies
sumber