Jika Anda tidak menggunakan ekstensi apa pun untuk git, Anda dapat menulis skrip shell (saya akan menamainya git-release.sh) dan daripada Anda dapat alias git releasedengan sesuatu seperti:
Anda bisa, daripada, menggunakan git release 0.4yang akan mengeksekusi path/to/pre-release.sh 0.4. Script Anda dapat mengedit package.json, membuat tag, dan mendorongnya ke server.
Baris pertama npm version patch,, akan meningkatkan versi tambalan sebanyak 1 (xx1 ke xx2) pada package.json. Kemudian Anda menambahkan semua file - termasuk package.jsonyang pada saat itu telah dimodifikasi. Kemudian, biasa git commitdan git push, dan akhirnya npm publishmenerbitkan modul.
Sejauh yang saya tahu, npm version patchapakah komitmen itu sendiri; Namun, untuk mendorong tag ke github, saya pikir Anda juga perlu melakukannya git push --tags.
ChrisV
@ChrisV benar - npm version patchmenabrak nomor versi dan segera melakukan perubahan
Dan Esparza
2
@ DanEsparza Ini mungkin hal pengaturan. npm version patchtidak melakukan apa pun untuk saya.
Mordred
@Mordred Hmmm ... mungkin. Saya tidak melihat apa pun di npm config docs tentang itu, tetapi mungkinkah Anda tidak memiliki git di jalur Anda atau sesuatu?
Dan Esparza
@DanEsparza git sudah pasti di jalur saat saya komit dari folder yang sama persis yang saya jalankan npm version.
Mordred
29
Untuk memberikan pendekatan yang lebih terkini.
package.json
"scripts":{"eslint":"eslint index.js","pretest":"npm install","test":"npm run eslint","preversion":"npm run test","version":"","postversion":"git push && git push --tags && npm publish"}
Maka Anda menjalankannya:
npm version minor --force -m "Some message to commit"
Yang mana akan:
... jalankan tes ...
ubah package.jsonversi Anda ke versi minor berikutnya (mis: 1.8.1 ke 1.9.0)
Anda juga dapat menambahkan skrip seperti yang "deploy-minor": "npm version minor --force -m \"version %s\""perlu Anda ingat adalah npm run deploy-minor:)
Kristofor Carle
23
Sebagai tambahan, npm versionAnda dapat menggunakan --no-git-tag-versionflag jika Anda menginginkan versi bump tetapi tidak ada tag atau komit baru:
// package.json{"husky":{"hooks":{"post-merge":"(git-branch-is master && npm version minor ||(git-branch-is dev && npm --no-git-tag-version version patch)",}}}
Sebelum ke husky V1:
"scripts":{..."postmerge":"(git-branch-is master && npm version minor ||(git-branch-is dev && npm --no-git-tag-version version patch)",...},
Saya suka opsi husky ini yang terbaik, meskipun saya tidak berpikir itu berfungsi seperti sekarang. saya tidak berpikir 'postmerge' ada, "pre-push" mungkin merupakan opsi terbaik. dan hasil 'git-branch-is' tidak benar-benar berfungsi karena mereka salah dan pada dasarnya merusak seluruh pos (karena memeriksa baik master dan dev, itu akan salah pada salah satu dari mereka)
Phil
@Phil Anda masih dapat menggunakan postmerge, tetapi sekarang post-mergedi dalam husky: {hooks:{}}konfigurasi. Masalah apa yang Anda miliki git-branch-is?
Anima-t3d
itu hanya akan kesalahan bagi saya daripada menjalankan. Namun jangan khawatir, saya akhirnya memilih opsi ini: marketplace.visualstudio.com/...
Phil
1
@ Phil terima kasih telah menindaklanjuti. Saya baru saja mencoba dengan versi terbaru dan saya tidak memiliki kesalahan, mungkin ada yang salah dengan perintah post-merge Anda sendiri.
Anima-t3d
5
Saya ingin menambahkan kejelasan pada jawaban yang didapat pertanyaan ini.
Meskipun ada beberapa jawaban di sini yang menangani masalah dengan benar dan memberikan solusi, mereka bukan jawaban yang benar. Jawaban yang benar untuk pertanyaan ini adalah menggunakannpm version
Apakah ada cara untuk mengedit file package.json secara otomatis?
Ya, apa yang dapat Anda lakukan untuk mewujudkan ini adalah dengan menjalankan npm versionperintah ketika diperlukan, Anda dapat membaca lebih lanjut tentang hal ini di sini versi npm , tetapi penggunaan dasar akan npm version patchdan itu akan menambahkan urutan 3 digit pada package.jsonversi Anda (1.0. X )
Apakah menggunakan hook pre-release git membantu?
Anda dapat mengonfigurasi untuk menjalankan npm versionperintah pada kait pra-rilis, sesuai kebutuhan, tetapi itu tergantung apakah itu yang Anda butuhkan atau tidak di dalam pipa CD / CI Anda, tetapi tanpa npm versionperintah, git pre-releasekait tidak dapat melakukan apa pun "dengan mudah" denganpackage.json
Alasan mengapa npm versionjawaban yang benar adalah sebagai berikut:
Jika pengguna menggunakan struktur folder di mana ia memiliki package.jsondia menggunakan npmjika dia menggunakan npmdia memiliki akses ke npm scripts.
Jika dia memiliki akses ke npm scriptsdia memiliki akses ke npm versionperintah.
Menggunakan perintah ini ia tidak perlu menginstal apa pun lagi di komputer atau pipa CD / CI yang dalam jangka panjang akan mengurangi upaya pemeliharaan untuk proyek tersebut, dan akan membantu dengan pengaturan
Jawaban lain di mana alat lain diusulkan tidak benar.
gulp-bump berfungsi tetapi membutuhkan paket tambahan lain yang dapat menciptakan masalah dalam jangka panjang (poin 3 dari jawaban saya)
grunt-bump berfungsi tetapi membutuhkan paket tambahan lain yang dapat menciptakan masalah dalam jangka panjang (poin 3 dari jawaban saya)
Pertama, Anda perlu memahami aturan untuk meningkatkan nomor versi. Anda dapat membaca lebih lanjut tentang versi semantik di sini.
Setiap versi akan memiliki versi xyz di mana ia mendefinisikan untuk tujuan yang berbeda seperti yang ditunjukkan di bawah ini.
x - mayor, naikkan ini ketika Anda memiliki perubahan besar dan ini adalah perbedaan besar dari perubahan yang terjadi.
y - minor, lanjutkan ini ketika Anda memiliki fungsi atau peningkatan baru terjadi.
z - tambal, naikkan ini saat bug Anda diperbaiki atau kembalikan perubahan pada versi sebelumnya.
Untuk menjalankan skrip, Anda dapat mendefinisikannya di package.json Anda.
"script":{"buildmajor":"npm version major && ng build --prod","buildminor":"npm version minor && ng build --prod","buildpatch":"npm version patch && ng build --prod"}
Di terminal Anda, Anda hanya perlu menjalankan npm sesuai dengan kebutuhan Anda seperti
npm run buildpatch
Jika menjalankannya di git repo, versi git-tag-default adalah benar dan jika Anda tidak ingin melakukannya, Anda dapat menambahkan perintah di bawah ini ke dalam skrip Anda:
--no-git-tag-version
untuk misalnya: "npm --no-git-tag-version version major && ng build --prod"
Saya telah membuat alat yang dapat menyelesaikan versi semantik otomatis berdasarkan tag dalam pesan komit, yang dikenal sebagai tipe perubahan. Ini erat mengikuti Konvensi Pesan Komit Sudut bersama dengan Spesifikasi Versi Semantik.
Anda bisa menggunakan alat ini untuk secara otomatis mengubah versi di package.json menggunakan npm CLI (ini dijelaskan di sini ).
Selain itu, ia dapat membuat log log dari komit ini dan juga memiliki menu (dengan pemeriksa ejaan untuk pesan komit) untuk membuat komit berdasarkan pada jenis perubahan. Saya sangat merekomendasikan memeriksanya dan membaca dokumen untuk melihat segala sesuatu yang dapat diselesaikan dengan itu.
Saya menulis alat ini karena saya tidak dapat menemukan apa pun yang sesuai dengan kebutuhan saya untuk CICD Pipeline saya untuk mengotomatisasi versi semantik. Saya lebih suka fokus pada apa perubahan yang sebenarnya daripada apa versi seharusnya dan di situlah alat saya menghemat hari.
Untuk informasi lebih lanjut tentang alasan untuk alat ini, silakan lihat ini .
Jawaban:
npm version
mungkin jawaban yang benar. Sekedar memberi alternatif saya rekomendasikan grunt-bump . Itu dikelola oleh salah satu orang dari angular.js.Pemakaian:
Jika Anda menggunakan gerutuan, itu mungkin solusi paling sederhana.
sumber
npm version
?npm --no-git-tag-version version patch
.Jawaban benar
Untuk melakukannya, cukup
npm version patch
=)Jawaban lama saya
pre-release
Awalnya tidak ada kait digit
. Setidaknya,man githooks
tidak menunjukkannya.Jika Anda menggunakan
git-extra
( https://github.com/visionmedia/git-extras ), misalnya, Anda dapat menggunakanpre-release
pengait yang diterapkan olehnya, seperti yang Anda lihat di https://github.com/visionmedia/ git-extras / blob / master / bin / git-release . Diperlukan hanya.git/hook/pre-release.sh
file yang dapat dieksekusi yang mengeditpackage.json
file Anda . Melakukan, mendorong dan memberi tag akan dilakukan olehgit release
perintah.Jika Anda tidak menggunakan ekstensi apa pun untuk
git
, Anda dapat menulis skrip shell (saya akan menamainyagit-release.sh
) dan daripada Anda dapat aliasgit release
dengan sesuatu seperti:git config --global alias.release '!sh path/to/pre-release.sh $1'
Anda bisa, daripada, menggunakan
git release 0.4
yang akan mengeksekusipath/to/pre-release.sh 0.4
. Script Anda dapat mengeditpackage.json
, membuat tag, dan mendorongnya ke server.sumber
git release
tidak memperbarui package.json yang sesuai ... github.com/visionmedia/git-extras/issues/150 : D.git/hooks/pre-release.sh
berisi:echo -e "{\n\"version\": "$1"\n}" > package.json
dan coba gunakangit release $version
npm version patch
ataunpm version 0.3.1
akan menyelesaikannya! Bisakah Anda memperbarui jawaban Anda? ty !!Inilah yang biasanya saya lakukan dengan proyek saya:
Baris pertama
npm version patch
,, akan meningkatkan versi tambalan sebanyak 1 (xx1 ke xx2) padapackage.json
. Kemudian Anda menambahkan semua file - termasukpackage.json
yang pada saat itu telah dimodifikasi. Kemudian, biasagit commit
dangit push
, dan akhirnyanpm publish
menerbitkan modul.Saya harap ini masuk akal ...
Merc.
sumber
npm version patch
apakah komitmen itu sendiri; Namun, untuk mendorong tag ke github, saya pikir Anda juga perlu melakukannyagit push --tags
.npm version patch
menabrak nomor versi dan segera melakukan perubahannpm version patch
tidak melakukan apa pun untuk saya.npm version
.Untuk memberikan pendekatan yang lebih terkini.
package.json
Maka Anda menjalankannya:
Yang mana akan:
... jalankan tes ...
ubah
package.json
versi Anda ke versi minor berikutnya (mis: 1.8.1 ke 1.9.0)dorong perubahan Anda
buat rilis tag git baru dan
publikasikan paket npm Anda.
--force
adalah untuk menunjukkan siapa bosnya! Samping lelucon lihat https://github.com/npm/npm/issues/8620sumber
"deploy-minor": "npm version minor --force -m \"version %s\""
perlu Anda ingat adalahnpm run deploy-minor
:)Sebagai tambahan,
npm version
Anda dapat menggunakan--no-git-tag-version
flag jika Anda menginginkan versi bump tetapi tidak ada tag atau komit baru:https://docs.npmjs.com/cli/version
sumber
Jika Anda menggunakan benang, Anda dapat menggunakannya
Ini akan menambah
package.json
versi dengan tambalan(0.0.x)
, komit, dan menandainya dengan formatv0.0.0
Anda juga dapat menabrak versi minor atau mayor dengan menggunakan
--minor
atau--major
Saat mendorong ke git pastikan Anda juga mendorong tag
--follow-tags
Anda juga dapat membuat skrip untuk itu
Cukup jalankan dengan mengetik
yarn release-it
sumber
Saya menggunakan husky dan git-branch-is :
Pada husky v1 +:
Sebelum ke husky V1:
Baca lebih lanjut tentang versi npm
Webpack atau Vue.js
Jika Anda menggunakan webpack atau Vue.js, Anda dapat menampilkan ini di UI menggunakan versi Auto inject - plugin Webpack
NUXT
Di
nuxt.config.js
:Di dalam Anda
template
misalnya di footer:sumber
postmerge
, tetapi sekarangpost-merge
di dalamhusky: {hooks:{}}
konfigurasi. Masalah apa yang Anda milikigit-branch-is
?Saya ingin menambahkan kejelasan pada jawaban yang didapat pertanyaan ini.
Meskipun ada beberapa jawaban di sini yang menangani masalah dengan benar dan memberikan solusi, mereka bukan jawaban yang benar. Jawaban yang benar untuk pertanyaan ini adalah menggunakan
npm version
Ya, apa yang dapat Anda lakukan untuk mewujudkan ini adalah dengan menjalankan
npm version
perintah ketika diperlukan, Anda dapat membaca lebih lanjut tentang hal ini di sini versi npm , tetapi penggunaan dasar akannpm version patch
dan itu akan menambahkan urutan 3 digit padapackage.json
versi Anda (1.0. X )Anda dapat mengonfigurasi untuk menjalankan
npm version
perintah pada kait pra-rilis, sesuai kebutuhan, tetapi itu tergantung apakah itu yang Anda butuhkan atau tidak di dalam pipa CD / CI Anda, tetapi tanpanpm version
perintah,git pre-release
kait tidak dapat melakukan apa pun "dengan mudah" denganpackage.json
Alasan mengapa
npm version
jawaban yang benar adalah sebagai berikut:package.json
dia menggunakannpm
jika dia menggunakannpm
dia memiliki akses kenpm scripts
.npm scripts
dia memiliki akses kenpm version
perintah.Jawaban lain di mana alat lain diusulkan tidak benar.
gulp-bump
berfungsi tetapi membutuhkan paket tambahan lain yang dapat menciptakan masalah dalam jangka panjang (poin 3 dari jawaban saya)grunt-bump
berfungsi tetapi membutuhkan paket tambahan lain yang dapat menciptakan masalah dalam jangka panjang (poin 3 dari jawaban saya)sumber
Pertama, Anda perlu memahami aturan untuk meningkatkan nomor versi. Anda dapat membaca lebih lanjut tentang versi semantik di sini.
Setiap versi akan memiliki versi xyz di mana ia mendefinisikan untuk tujuan yang berbeda seperti yang ditunjukkan di bawah ini.
Untuk menjalankan skrip, Anda dapat mendefinisikannya di package.json Anda.
Di terminal Anda, Anda hanya perlu menjalankan npm sesuai dengan kebutuhan Anda seperti
Jika menjalankannya di git repo, versi git-tag-default adalah benar dan jika Anda tidak ingin melakukannya, Anda dapat menambahkan perintah di bawah ini ke dalam skrip Anda:
untuk misalnya:
"npm --no-git-tag-version version major && ng build --prod"
sumber
Saya telah membuat alat yang dapat menyelesaikan versi semantik otomatis berdasarkan tag dalam pesan komit, yang dikenal sebagai tipe perubahan. Ini erat mengikuti Konvensi Pesan Komit Sudut bersama dengan Spesifikasi Versi Semantik.
Anda bisa menggunakan alat ini untuk secara otomatis mengubah versi di package.json menggunakan npm CLI (ini dijelaskan di sini ).
Selain itu, ia dapat membuat log log dari komit ini dan juga memiliki menu (dengan pemeriksa ejaan untuk pesan komit) untuk membuat komit berdasarkan pada jenis perubahan. Saya sangat merekomendasikan memeriksanya dan membaca dokumen untuk melihat segala sesuatu yang dapat diselesaikan dengan itu.
Saya menulis alat ini karena saya tidak dapat menemukan apa pun yang sesuai dengan kebutuhan saya untuk CICD Pipeline saya untuk mengotomatisasi versi semantik. Saya lebih suka fokus pada apa perubahan yang sebenarnya daripada apa versi seharusnya dan di situlah alat saya menghemat hari.
Untuk informasi lebih lanjut tentang alasan untuk alat ini, silakan lihat ini .
sumber