Sebelum saya melakukan rilis kecil dan menandainya, saya ingin memperbarui package.json untuk mencerminkan versi baru dari program.
Apakah ada cara untuk mengedit file package.json
secara otomatis?
Apakah menggunakan git pre-release hook
bantuan?
Sebelum saya melakukan rilis kecil dan menandainya, saya ingin memperbarui package.json untuk mencerminkan versi baru dari program.
Apakah ada cara untuk mengedit file package.json
secara otomatis?
Apakah menggunakan git pre-release hook
bantuan?
Jawaban:
npm version
mungkin jawaban yang benar. Sekedar memberi alternatif saya rekomendasikan grunt-bump . Itu dikelola oleh salah satu orang dari angular.js.
Pemakaian:
grunt bump
>> Version bumped to 0.0.2
grunt bump:patch
>> Version bumped to 0.0.3
grunt bump:minor
>> Version bumped to 0.1.0
grunt bump
>> Version bumped to 0.1.1
grunt bump:major
>> Version bumped to 1.0.0
Jika Anda menggunakan gerutuan, itu mungkin solusi paling sederhana.
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 di git
. Setidaknya, man githooks
tidak menunjukkannya.
Jika Anda menggunakan git-extra
( https://github.com/visionmedia/git-extras ), misalnya, Anda dapat menggunakan pre-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 mengedit package.json
file Anda . Melakukan, mendorong dan memberi tag akan dilakukan oleh git release
perintah.
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 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 mengeksekusi path/to/pre-release.sh 0.4
. Script Anda dapat mengedit package.json
, membuat tag, dan mendorongnya ke server.
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
Inilah yang biasanya saya lakukan dengan proyek saya:
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
Baris pertama npm version patch
,, akan meningkatkan versi tambalan sebanyak 1 (xx1 ke xx2) pada package.json
. Kemudian Anda menambahkan semua file - termasuk package.json
yang pada saat itu telah dimodifikasi. Kemudian, biasa git commit
dan git push
, dan akhirnya npm publish
menerbitkan modul.
Saya harap ini masuk akal ...
Merc.
npm version patch
apakah komitmen itu sendiri; Namun, untuk mendorong tag ke github, saya pikir Anda juga perlu melakukannya git push --tags
.
npm version patch
menabrak nomor versi dan segera melakukan perubahan
npm version patch
tidak melakukan apa pun untuk saya.
npm version
.
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.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/8620
"deploy-minor": "npm version minor --force -m \"version %s\""
perlu Anda ingat adalah npm 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:
npm --no-git-tag-version version patch
Jika Anda menggunakan benang, Anda dapat menggunakannya
yarn version --patch
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
git push --follow-tags
Anda juga dapat membuat skrip untuk itu
"release-it": "yarn version --patch && git push --follow-tags"
Cukup jalankan dengan mengetik yarn release-it
Saya menggunakan husky dan git-branch-is :
Pada husky v1 +:
// 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)",
...
},
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
:
var WebpackAutoInject = require('webpack-auto-inject-version');
module.exports = {
build: {
plugins: [
new WebpackAutoInject({
// options
// example:
components: {
InjectAsComment: false
},
}),
]
},
}
Di dalam Anda template
misalnya di footer:
<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
postmerge
, tetapi sekarang post-merge
di dalam husky: {hooks:{}}
konfigurasi. Masalah apa yang Anda miliki git-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 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 version
perintah ketika diperlukan, Anda dapat membaca lebih lanjut tentang hal ini di sini versi npm , tetapi penggunaan dasar akan npm version patch
dan itu akan menambahkan urutan 3 digit pada package.json
versi Anda (1.0. X )
Apakah menggunakan hook pre-release git membantu?
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 tanpa npm 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 menggunakan npm
jika dia menggunakan npm
dia memiliki akses ke npm scripts
.npm scripts
dia memiliki akses ke npm 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)
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.
"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 .