Küçük bir sürüm yapmadan ve etiketlemeden önce, programın yeni sürümünü yansıtacak şekilde package.json dosyasını güncellemek istiyorum.
Dosyayı package.jsonotomatik olarak düzenlemenin bir yolu var mı ?
git pre-release hookYardım ister misiniz ?
Küçük bir sürüm yapmadan ve etiketlemeden önce, programın yeni sürümünü yansıtacak şekilde package.json dosyasını güncellemek istiyorum.
Dosyayı package.jsonotomatik olarak düzenlemenin bir yolu var mı ?
git pre-release hookYardım ister misiniz ?
Yanıtlar:
npm versionmuhtemelen doğru cevaptır. Sadece bir alternatif vermek için homurdanma yumru öneririz . Angular.js'den biri tarafından korunur.
Kullanımı:
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
Yine de grunt kullanıyorsanız, en basit çözüm olabilir.
npm version?
npm --no-git-tag-version version patch.
Doğru cevap
Bunu yapmak için, sadece npm version patch=)
Eski cevabım
pre-releaseBaşlangıçta kanca yok git. En azından man githooksgöstermiyor.
Örneğin git-extra( https://github.com/visionmedia/git-extras ) kullanıyorsanız pre-release, https://github.com/visionmedia/ adresinde de görebileceğiniz gibi, tarafından uygulanan bir kanca kullanabilirsiniz. git-extras / blob / master / bin / git-release . Yalnızca .git/hook/pre-release.shdosyanızı düzenleyen yürütülebilir bir dosya gerekir package.json. Taahhüt, itme ve etiketleme git releasekomut tarafından yapılacaktır .
İçin herhangi bir uzantı kullanmıyorsanız git, bir kabuk betiği yazabilirim (adlandıracağım git-release.sh) ve daha sonra git releaseböyle bir şeyle takma adlandırabilirsiniz :
git config --global alias.release '!sh path/to/pre-release.sh $1'
git release 0.4Yürütülecek olanı kullanabilirsiniz path/to/pre-release.sh 0.4. Komut dosyanız düzenleyebilir package.json, etiketi oluşturabilir ve sunucuya gönderebilir.
git releasepaketi güncellemez. Json buna göre ... github.com/visionmedia/git-extras/issues/150 : D
.git/hooks/pre-release.shiçerenleri oluşturun : echo -e "{\n\"version\": "$1"\n}" > package.jsonve kullanmayı deneyingit release $version
Normalde projelerimle yaptığım budur:
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
İlk satır, npm version patchyama sürümünü 1 (xx1 ila xx2) inç artıracaktır package.json. Ardından package.json, bu noktada değiştirilenler de dahil olmak üzere tüm dosyaları eklersiniz . Sonra, olağan git commitve git pushve son npm publisholarak modülü yayınlamak.
Umarım bu mantıklı gelir...
Merc.
npm version patch, taahhüdü kendisi yapar; Ancak, etiketi github'a göndermek için, bence de buna ihtiyacınız var git push --tags.
npm version patchsürüm numarasını çarpar ve hemen değişikliği yapar
npm version patchbenim için hiçbir şey taahhüt etmiyor.
npm version.
Daha güncel bir yaklaşım sunmak.
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"
}
Sonra çalıştırın:
npm version minor --force -m "Some message to commit"
Hangisi:
... testleri yap ...
Yaptığınız değişiklik package.jsonbir sonraki alt sürümüne (örn: 1.8.1 1.9.0 için)
değişikliklerini zorla
yeni bir git etiketi sürümü oluştur ve
npm paketinizi yayınlayın.
--forcekimin patron olduğunu göstermektir! Şaka bir yana bkz. Https://github.com/npm/npm/issues/8620
"deploy-minor": "npm version minor --force -m \"version %s\""hatırlamanız gereken tek şey npm run deploy-minor:) gibi bir komut dosyası da ekleyebilirsiniz
Buna ek olarak npm version, --no-git-tag-versionbir sürüm yumru istiyorsanız, ancak etiket veya yeni bir taahhüt yoksa bayrağı kullanabilirsiniz :
npm --no-git-tag-version version patch
İplik kullanıyorsanız,
yarn version --patch
Bu, package.jsonsürümü yama (0.0.x), taahhüt ve formatla etiketleyecekv0.0.0
Aynı şekilde sen kullanarak minör veya majör sürüm çarpmak edebilir --minorya da--major
Git tuşuna basarken etiketleri --follow-tags
git push --follow-tags
Bunun için bir komut dosyası da oluşturabilirsiniz
"release-it": "yarn version --patch && git push --follow-tags"
Sadece yazarak çalıştırın yarn release-it
Ben husky ve git-branch-is kullanıyorum :
Husky v1 + 'dan itibaren:
// package.json
{
"husky": {
"hooks": {
"post-merge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
}
}
}
Husky V1'den önce:
"scripts": {
...
"postmerge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
...
},
Npm sürümü hakkında devamını oku
Webpack veya Vue.js
Webpack veya Vue.js kullanıyorsanız, bunu Otomatik enjekte sürümü - Webpack eklentisini kullanarak kullanıcı arayüzünde görüntüleyebilirsiniz
NuxT
İçinde nuxt.config.js:
var WebpackAutoInject = require('webpack-auto-inject-version');
module.exports = {
build: {
plugins: [
new WebpackAutoInject({
// options
// example:
components: {
InjectAsComment: false
},
}),
]
},
}
İçinde templateörneğin altbilgide:
<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
postmerge, ancak şimdi yapılandırma post-mergeiçinde husky: {hooks:{}}. Hangi sorunun var git-branch-is?
Bu sorunun cevabına biraz açıklık getirmek istiyorum.
Burada problemi düzgün bir şekilde ele alan ve bir çözüm sunan bazı cevaplar olduğunu düşünse bile, bunlar doğru cevaplar değildir. Bu sorunun doğru cevabı kullanmaknpm version
Package.json dosyasını otomatik olarak düzenlemenin bir yolu var mı?
Evet, bunu yapmak için yapabileceğiniz şey, npm versiongerektiğinde komutu çalıştırmaktır, burada npm sürümü hakkında daha fazla bilgi edinebilirsiniz , ancak temel kullanım olurdu npm version patchve package.jsonsürümünüze 3. basamak sırasını ekleyecektir (1.0. X )
Git öncesi yayın kancası kullanmak yardımcı olur mu?
npm versionKomutu yayın öncesi kancada istediğiniz gibi çalıştıracak şekilde yapılandırabilirsiniz , ancak bu CD / CI borunuzda ihtiyacınız olan şey olup olmadığına bağlıdır, ancak npm versionkomut olmadan bir git pre-releasekanca "kolayca" hiçbir şey yapamaz ilepackage.json
npm versionDoğru cevabın nedeni şu:
package.jsondiye kullanıyor npmdiye kullanıp kullanmadığını npmUlaşabildiği npm scripts.npm scripts, npm versionkomuta erişimi vardır .Diğer araçların önerildiği diğer cevaplar yanlıştır.
gulp-bump çalışır, ancak uzun vadede sorun yaratabilecek başka bir ekstra paket gerektirir (cevabımın 3. noktası)
grunt-bump çalışır, ancak uzun vadede sorun yaratabilecek başka bir ekstra paket gerektirir (cevabımın 3. noktası)
İlk olarak, sürüm numarasını yükseltmek için kuralları anlamanız gerekir. Anlamsal sürüm hakkında daha fazla bilgiyi buradan edinebilirsiniz.
Her sürüm, aşağıda gösterildiği gibi farklı amaç için tanımladığı xyz sürümüne sahip olacaktır.
Komut dosyalarını çalıştırmak için paketinizde tanımlayabilirsiniz. Json.
"script": {
"buildmajor": "npm version major && ng build --prod",
"buildminor": "npm version minor && ng build --prod",
"buildpatch": "npm version patch && ng build --prod"
}
Terminalinizde, npm gibi ihtiyaçlarınıza göre çalışmanız yeterlidir
npm run buildpatch
Git repo'da çalıştırırsanız, varsayılan git-tag-version true'dur ve bunu yapmak istemiyorsanız, komut dosyalarınıza aşağıdaki komutu ekleyebilirsiniz:
--no-git-tag-version
örneğin: "npm --no-git-tag-version version major && ng build --prod"
Değişiklik türleri olarak bilinen tamamlama iletilerindeki etiketlere dayalı otomatik semantik sürümleme yapabilen bir araç oluşturdum . Bu, Semantik Versiyon Spesifikasyonu ile birlikte Açısal Taahhüt Mesajı Sözleşmesini yakından takip eder.
Bu aracı, npm CLI'yi kullanarak package.json içindeki sürümü otomatik olarak değiştirmek için kullanabilirsiniz ( burada açıklanmaktadır ).
Buna ek olarak, bu taahhütlerden bir değişiklik günlüğü oluşturabilir ve ayrıca değişiklik türüne göre komisyonlar oluşturmak için bir menü (taahhüt mesajları için bir yazım denetleyicisi ile) içerir. Kontrol etmenizi ve onunla gerçekleştirilebilecek her şeyi görmek için dokümanlara okumanızı şiddetle tavsiye ederim.
Aracı yazdım çünkü CICD Pipeline'ımın semantik sürümlendirmeyi otomatikleştirmesi için gereksinimlerime uygun hiçbir şey bulamadım. Gerçek değişikliklerin ne olduğuna, sürümün olması gerekenden daha fazla odaklanmayı tercih ederim ve burası aracımın günü kurtardığı yer.
Aracın mantığı hakkında daha fazla bilgi için lütfen buna bakın .