Jeśli nie używasz żadnego rozszerzenia git, możesz napisać skrypt powłoki (nazwę go git-release.sh), a następnie możesz połączyć go git releasez aliasem za pomocą czegoś takiego:
Możesz, niż użyć, git release 0.4który zostanie wykonany path/to/pre-release.sh 0.4. Twój skrypt może edytować package.json, tworzyć znaczniki i przekazywać je na serwer.
Pierwszy wiersz npm version patchzwiększy wersję łatki o 1 (xx1 do xx2) w package.json. Następnie dodajesz wszystkie pliki - w tym te, package.jsonktóre w tym momencie zostały zmodyfikowane. Potem zazwyczaj git commiti git push, wreszcie npm publishopublikować moduł.
O ile mogę stwierdzić, npm version patchsamo zatwierdzenie; jednak, aby przesłać tag do github, myślę, że również musisz git push --tags.
ChrisV
@ChrisV jest poprawny - podbija npm version patchnumer wersji i natychmiast zatwierdza zmianę
Dan Esparza
2
@DanEsparza Może to być ustawienie. npm version patchnic dla mnie nie popełnia.
Mordred,
@Mordred Hmmm ... prawdopodobnie. Nic nie widzę w dokumentach konfiguracji npm na ten temat, ale czy to możliwe, że nie masz gita na swojej ścieżce czy coś takiego?
Dan Esparza
@DanEsparza git zdecydowanie znajduje się na ścieżce, ponieważ dokonuję transakcji z tego samego folderu, który uruchamiam npm version.
Mordred,
28
Aby zapewnić bardziej aktualne podejście.
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"}
Następnie uruchom:
npm version minor --force -m "Some message to commit"
Które będą:
... uruchom testy ...
zmień package.jsonna następną mniejszą wersję (np .: 1.8.1 na 1.9.0)
Możesz także dodać taki skrypt, "deploy-minor": "npm version minor --force -m \"version %s\""aby wszystko, co musisz pamiętać, to npm run deploy-minor:)
Kristofor Carle,
23
Jako dodatek npm versionmożesz użyć --no-git-tag-versionflagi, jeśli chcesz wersji wypukłości, ale nie ma tagu lub nowego zatwierdzenia:
// package.json{"husky":{"hooks":{"post-merge":"(git-branch-is master && npm version minor ||(git-branch-is dev && npm --no-git-tag-version version patch)",}}}
Przed husky V1:
"scripts":{..."postmerge":"(git-branch-is master && npm version minor ||(git-branch-is dev && npm --no-git-tag-version version patch)",...},
Najbardziej podoba mi się ta opcja husky, chociaż nie wydaje mi się, żeby działała już tak, jak jest. nie sądzę, żeby istniało „postmerge”, „pre-push” jest prawdopodobnie najlepszą opcją. a wyniki „git-branch-is” tak naprawdę nie działają, ponieważ powodują błąd i zasadniczo powodują awarię całego postu (ponieważ sprawdza on zarówno master, jak i dev, błąd wystąpi na jednym z nich)
Phil
@Phil Nadal możesz używać postmerge, ale jest teraz post-mergew husky: {hooks:{}}konfiguracji. Z czym masz problem git-branch-is?
Anima-t3d
po prostu wyskoczyłoby dla mnie zamiast uruchomić. Nie martw się jednak, zdecydowałem się na tę opcję: marketplace.visualstudio.com/…
Phil
1
@Phil dzięki za kontynuację. Właśnie próbowałem ze zaktualizowaną wersją i nie mam błędów, być może coś jest nie tak z samym poleceniem po scaleniu.
Anima-t3d
5
Chcę dodać jasności do odpowiedzi na to pytanie.
Nawet jeśli są tutaj odpowiedzi, które właściwie rozwiązują problem i zapewniają rozwiązanie, nie są one prawidłowe. Prawidłową odpowiedzią na to pytanie jest użycienpm version
Czy istnieje sposób automatycznej edycji pliku package.json?
Tak, co możesz zrobić, aby tak się stało, to uruchom npm versionpolecenie w razie potrzeby, możesz przeczytać więcej na ten temat tutaj npm wersja , ale podstawowe użycie byłoby npm version patchi dodałoby 3-cyfrową kolejność w twojej package.jsonwersji (1.0. X )
Czy skorzystanie z haka pre-release git pomoże?
Możesz skonfigurować uruchamianie npm versionpolecenia na haku przedpremierowym, tak jak potrzebujesz, ale to zależy, czy tego właśnie potrzebujesz w rurze CD / CI, ale bez npm versionpolecenia git pre-releasehak nie może nic zrobić „łatwo” zpackage.json
Powodem, dla którego npm versionjest poprawna odpowiedź jest następująca:
Jeśli użytkownik korzysta ze struktury folderów, w której ma package.json, używa, npmjeśli używa npm, ma dostęp do npm scripts.
Jeśli ma dostęp npm scripts, ma dostęp do npm versionpolecenia.
Za pomocą tego polecenia nie musi instalować niczego więcej w swoim komputerze lub rurze CD / CI, co w dłuższej perspektywie zmniejszy wysiłek związany z utrzymaniem projektu i pomoże w instalacji
Inne odpowiedzi, w których proponowane są inne narzędzia, są nieprawidłowe.
gulp-bump działa, ale wymaga innego dodatkowego pakietu, który może powodować problemy w dłuższej perspektywie (punkt 3 mojej odpowiedzi)
grunt-bump działa, ale wymaga innego dodatkowego pakietu, który może powodować problemy w dłuższej perspektywie (punkt 3 mojej odpowiedzi)
Najpierw musisz zrozumieć zasady uaktualniania numeru wersji. Możesz przeczytać więcej o wersji semantycznej tutaj.
Każda wersja będzie miała wersję xyz, w której definiuje się ją w innym celu, jak pokazano poniżej.
x - major, w górę, gdy masz poważne zmiany i jest ogromna rozbieżność zmian.
y - drobne, do góry, gdy pojawi się nowa funkcjonalność lub rozszerzenie.
z - łatka, w górę, gdy masz naprawione błędy lub przywróć zmiany we wcześniejszej wersji.
Aby uruchomić skrypty, możesz to zdefiniować w pliku package.json.
"script":{"buildmajor":"npm version major && ng build --prod","buildminor":"npm version minor && ng build --prod","buildpatch":"npm version patch && ng build --prod"}
W swoim terminalu wystarczy uruchomić npm odpowiednio do swoich potrzeb
npm run buildpatch
Jeśli uruchomisz go w git repo, domyślna wersja git-tag-true ma wartość true, a jeśli nie chcesz tego robić, możesz dodać poniższe polecenie do swoich skryptów:
--no-git-tag-version
na przykład: "npm --no-git-tag-version version major && ng build --prod"
Stworzyłem narzędzie, które może realizować automatyczne wersjonowanie semantyczne na podstawie znaczników w komunikatach zatwierdzania, znanych jako typy zmian. Jest to ściśle zgodne z Konwencją Angular Commit Message i specyfikacją wersjonowania semantycznego.
Możesz użyć tego narzędzia, aby automatycznie zmienić wersję pliku package.json przy użyciu interfejsu wiersza polecenia npm (opisano to tutaj ).
Ponadto może tworzyć dziennik zmian na podstawie tych zatwierdzeń, a także ma menu (z funkcją sprawdzania pisowni komunikatów zatwierdzania) do tworzenia zatwierdzeń na podstawie typu zmiany. Bardzo polecam sprawdzenie i przeczytanie dokumentów, aby zobaczyć wszystko, co można z tym zrobić.
Napisałem to narzędzie, ponieważ nie mogłem znaleźć niczego, co odpowiadałoby moim potrzebom dla mojego rurociągu CICD do automatyzacji wersjonowania semantycznego. Wolę skupić się na faktycznych zmianach niż na wersji i właśnie tam moje narzędzie oszczędza dzień.
Aby uzyskać więcej informacji na temat uzasadnienia dla narzędzia, zobacz to .
Odpowiedzi:
npm version
jest prawdopodobnie poprawną odpowiedzią. Żeby dać alternatywę, polecam chrząknięcie . Obsługuje go jeden z facetów z angular.js.Stosowanie:
Jeśli mimo wszystko używasz chrząka, może to być najprostsze rozwiązanie.
źródło
npm version
?npm --no-git-tag-version version patch
.Poprawna odpowiedź
Aby to zrobić, po prostu
npm version patch
=)Moja stara odpowiedź
pre-release
Początkowo nie ma hakagit
. Przynajmniejman githooks
tego nie pokazuje.Jeśli używasz
git-extra
( https://github.com/visionmedia/git-extras ), na przykład, możesz użyćpre-release
haka, który jest przez niego implementowany, jak widać na https://github.com/visionmedia/ git-extras / blob / master / bin / git-release . Potrzebny jest tylko.git/hook/pre-release.sh
plik wykonywalny, który edytujepackage.json
plik. Zatwierdzanie, pchanie i oznaczanie będzie wykonywane przezgit release
polecenie.Jeśli nie używasz żadnego rozszerzenia
git
, możesz napisać skrypt powłoki (nazwę gogit-release.sh
), a następnie możesz połączyć gogit release
z aliasem za pomocą czegoś takiego:git config --global alias.release '!sh path/to/pre-release.sh $1'
Możesz, niż użyć,
git release 0.4
który zostanie wykonanypath/to/pre-release.sh 0.4
. Twój skrypt może edytowaćpackage.json
, tworzyć znaczniki i przekazywać je na serwer.źródło
git release
nie aktualizuje odpowiednio package.json ... github.com/visionmedia/git-extras/issues/150 : D.git/hooks/pre-release.sh
echo -e "{\n\"version\": "$1"\n}" > package.json
git release $version
npm version patch
lubnpm version 0.3.1
to rozwiąże! Czy mógłbyś odpowiednio zaktualizować swoją odpowiedź? ty !!Tak zwykle robię z moimi projektami:
Pierwszy wiersz
npm version patch
zwiększy wersję łatki o 1 (xx1 do xx2) wpackage.json
. Następnie dodajesz wszystkie pliki - w tym te,package.json
które w tym momencie zostały zmodyfikowane. Potem zazwyczajgit commit
igit push
, wreszcienpm publish
opublikować moduł.Mam nadzieję, że to ma sens...
Merc.
źródło
npm version patch
samo zatwierdzenie; jednak, aby przesłać tag do github, myślę, że również musiszgit push --tags
.npm version patch
numer wersji i natychmiast zatwierdza zmianęnpm version patch
nic dla mnie nie popełnia.npm version
.Aby zapewnić bardziej aktualne podejście.
package.json
Następnie uruchom:
Które będą:
... uruchom testy ...
zmień
package.json
na następną mniejszą wersję (np .: 1.8.1 na 1.9.0)popchnij swoje zmiany
utwórz nową wersję tagu git i
opublikuj swój pakiet npm.
--force
jest pokazanie, kto jest szefem! Żarty na bok patrz https://github.com/npm/npm/issues/8620źródło
"deploy-minor": "npm version minor --force -m \"version %s\""
aby wszystko, co musisz pamiętać, tonpm run deploy-minor
:)Jako dodatek
npm version
możesz użyć--no-git-tag-version
flagi, jeśli chcesz wersji wypukłości, ale nie ma tagu lub nowego zatwierdzenia:https://docs.npmjs.com/cli/version
źródło
Jeśli używasz przędzy, możesz jej użyć
Spowoduje to zwiększenie
package.json
wersji przez łatkę(0.0.x)
, zatwierdzenie i oznaczenie jej formatemv0.0.0
Podobnie możesz zderzyć mniejszą lub większą wersję za pomocą
--minor
lub--major
Pchając do git, upewnij się, że również wypychasz tagi za pomocą
--follow-tags
Możesz także utworzyć dla niego skrypt
Po prostu uruchom go, pisząc
yarn release-it
źródło
Używam husky i git-branch-jest :
Od husky v1 +:
Przed husky V1:
Przeczytaj więcej o wersji npm
Webpack lub Vue.js
Jeśli używasz webpacka lub Vue.js, możesz wyświetlić to w interfejsie użytkownika za pomocą wersji Auto-wstrzykiwania - wtyczka Webpack
NUXT
W
nuxt.config.js
:Wewnątrz
template
na przykład w stopce:źródło
postmerge
, ale jest terazpost-merge
whusky: {hooks:{}}
konfiguracji. Z czym masz problemgit-branch-is
?Chcę dodać jasności do odpowiedzi na to pytanie.
Nawet jeśli są tutaj odpowiedzi, które właściwie rozwiązują problem i zapewniają rozwiązanie, nie są one prawidłowe. Prawidłową odpowiedzią na to pytanie jest użycie
npm version
Tak, co możesz zrobić, aby tak się stało, to uruchom
npm version
polecenie w razie potrzeby, możesz przeczytać więcej na ten temat tutaj npm wersja , ale podstawowe użycie byłobynpm version patch
i dodałoby 3-cyfrową kolejność w twojejpackage.json
wersji (1.0. X )Możesz skonfigurować uruchamianie
npm version
polecenia na haku przedpremierowym, tak jak potrzebujesz, ale to zależy, czy tego właśnie potrzebujesz w rurze CD / CI, ale beznpm version
poleceniagit pre-release
hak nie może nic zrobić „łatwo” zpackage.json
Powodem, dla którego
npm version
jest poprawna odpowiedź jest następująca:package.json
, używa,npm
jeśli używanpm
, ma dostęp donpm scripts
.npm scripts
, ma dostęp donpm version
polecenia.Inne odpowiedzi, w których proponowane są inne narzędzia, są nieprawidłowe.
gulp-bump
działa, ale wymaga innego dodatkowego pakietu, który może powodować problemy w dłuższej perspektywie (punkt 3 mojej odpowiedzi)grunt-bump
działa, ale wymaga innego dodatkowego pakietu, który może powodować problemy w dłuższej perspektywie (punkt 3 mojej odpowiedzi)źródło
Najpierw musisz zrozumieć zasady uaktualniania numeru wersji. Możesz przeczytać więcej o wersji semantycznej tutaj.
Każda wersja będzie miała wersję xyz, w której definiuje się ją w innym celu, jak pokazano poniżej.
Aby uruchomić skrypty, możesz to zdefiniować w pliku package.json.
W swoim terminalu wystarczy uruchomić npm odpowiednio do swoich potrzeb
Jeśli uruchomisz go w git repo, domyślna wersja git-tag-true ma wartość true, a jeśli nie chcesz tego robić, możesz dodać poniższe polecenie do swoich skryptów:
na przykład:
"npm --no-git-tag-version version major && ng build --prod"
źródło
Stworzyłem narzędzie, które może realizować automatyczne wersjonowanie semantyczne na podstawie znaczników w komunikatach zatwierdzania, znanych jako typy zmian. Jest to ściśle zgodne z Konwencją Angular Commit Message i specyfikacją wersjonowania semantycznego.
Możesz użyć tego narzędzia, aby automatycznie zmienić wersję pliku package.json przy użyciu interfejsu wiersza polecenia npm (opisano to tutaj ).
Ponadto może tworzyć dziennik zmian na podstawie tych zatwierdzeń, a także ma menu (z funkcją sprawdzania pisowni komunikatów zatwierdzania) do tworzenia zatwierdzeń na podstawie typu zmiany. Bardzo polecam sprawdzenie i przeczytanie dokumentów, aby zobaczyć wszystko, co można z tym zrobić.
Napisałem to narzędzie, ponieważ nie mogłem znaleźć niczego, co odpowiadałoby moim potrzebom dla mojego rurociągu CICD do automatyzacji wersjonowania semantycznego. Wolę skupić się na faktycznych zmianach niż na wersji i właśnie tam moje narzędzie oszczędza dzień.
Aby uzyskać więcej informacji na temat uzasadnienia dla narzędzia, zobacz to .
źródło