Migracja z npm powinna być dość łatwym procesem dla większości użytkowników. Yarn przyjmuje ten sam format package.json
co npm, i może zainstalować każdy pakiet z rejestru npm.
Jeśli chcesz wypróbować Yarn na istniejącym projekcie npm, po prostu spróbuj uruchomić:
yarn
To rozłoży twój folder node_modules
używając algorytmu rozdzielczości Yarn’a, który jest kompatybilny z thenode.js module resolution algorithm.
Jeśli otrzymasz błąd, sprawdź istniejący problem lub zgłoś go na Yarn issue tracker.
Po uruchomieniu yarn
lub yarn add <package>
, Yarn wygeneruje plik yarn.lock
w katalogu głównym twojego pakietu. Nie musisz czytać ani rozumieć tego pliku – po prostu sprawdź go w kontroli źródła. Kiedy inni ludzie zaczną używać Yarn zamiast npm
, plik yarn.lock
zapewni, że otrzymają dokładnie te same zależności, co ty.
W większości przypadków, uruchomienie yarn
lub yarn add
po raz pierwszy będzie po prostu działać. W niektórych przypadkach, informacje w pliku package.json
nie są wystarczająco wyraźne, aby wyeliminować zależności, a deterministyczny sposób, w jaki Yarn wybiera zależności, doprowadzi do konfliktów zależności. Jest to szczególnie prawdopodobne w większych projektach, gdzie czasami npm install
nie działa, a programiści często usuwają node_modules
i przebudowują od zera. Jeśli tak się stanie, spróbuj użyć npm
, aby wersje zależności były bardziej wyraźne, przed konwersją do Yarn.
Od Yarn 1.7.0, możesz zaimportować swój stan package-lock.json, wygenerowany przez npm
do Yarn, używając yarn import
.
Inni deweloperzy w projekcie mogą nadal używać npm
, więc nie musisz nakłaniać wszystkich w projekcie do konwersji w tym samym czasie. Deweloperzy używający yarn
otrzymają dokładnie taką samą konfigurację jak wszyscy inni, a deweloperzy używający npm
mogą otrzymać nieco inne konfiguracje, co jest zamierzonym zachowaniem npm
.
Później, jeśli zdecydujesz, że Yarn nie jest dla ciebie, możesz po prostu wrócić do używania npm
bez wprowadzania żadnych szczególnych zmian. Możesz usunąć swój stary plik yarn.lock
, jeśli nikt w projekcie nie używa już Yarn, ale nie jest to konieczne.
Jeśli używasz teraz pliku npm-shrinkwrap.json
, bądź świadomy, że możesz skończyć z innym zestawem zależności. Yarn nie obsługuje plików npmshrinkwrap, ponieważ nie zawierają one wystarczająco dużo informacji, aby zasilić algorytm deterministyczny Yarn’a. Jeśli używasz pliku shrinkwrap, może być łatwiej przekonwertować wszystkich pracujących nad projektem do używania Yarn w tym samym czasie. Wystarczy usunąć istniejący plik npm-shrinkwrap.json
i zameldować się w nowo utworzonym pliku yarn.lock
.
Porównanie poleceńCLI
npm (v5) | Yarn |
---|---|
npm install |
yarn add |
(N/D) | yarn add --flat |
(N/D) | yarn add --har |
npm install --no-package-lock |
yarn add --no-lockfile |
(N/A) | yarn add --pure-lockfile |
npm install --save |
yarn add |
npm install --save-dev |
yarn add --dev |
(N/A) | yarn add --peer |
npm install --save-optional |
yarn add --optional |
npm update --global |
yarn global upgrade |
npm rebuild |
yarn add --force |
npm uninstall |
yarn remove |
npm cache clean |
yarn cache clean |
rm -rf node_modules && npm install |
yarn upgrade |
npm version major |
yarn version --major |
npm version minor |
yarn version --minor |
npm version patch |
yarn version --patch |