Jak vytvořit rozdíl vydání balíčků npm na příkazovém řádku

Tento příspěvek původně popisoval funkčnost balíčku npm-diff a byl aktualizován poté, co npm dodal integrované diff příkaz.

Vydání npm v7.5.0 obsahuje nový příkaz – npm diff . Dokumentace npm popisuje příkaz takto:

Pravděpodobně tu situaci znáte:aktualizujete jednu závislost ve svém projektu Node.js a všechno se pokazí. I když tato aktualizace měla být zpětně kompatibilním patchem, věci se zhroutily a vy jste v "peklu aktualizace závislosti".

Jak pak můžete rychle vytvořit rozdíl aktualizovaných balíčků npm? Měli byste jít na GitHub a udělat tam rozdíl? Vždy jsem se v této situaci cítil ztracený a neměl jsem skvělý pracovní postup.

V této situaci je npm diff přichází do hry příkaz. 🎉

Použijte npm diff abyste rychle zjistili, co se změnilo. Definujte název balíčku spárovaný se dvěma čísly verzí vydání a získáte přístup k rozdílu dvou verzí balíčku.

npm diff --diff=<spec-a> --diff=<spec-b>

# example:
npm diff [email protected] [email protected]

Příkaz vytiskne na terminál barevný rozdíl. Už to samo o sobě je velmi užitečné. Když se ponořím do dlouhých rozdílů, preferuji dvě další funkce:

  • správné zvýraznění syntaxe
  • porovnání souborů vedle sebe

Jak můžete tyto dvě funkce integrovat?

Seznamte se s delta – nástroj pro porovnání se zvýrazňováním syntaxe

Před chvílí jsem začal používat delta pro git diffs na příkazovém řádku. Je to fantastické! Zobrazuje čísla řádků, podporuje zvýraznění syntaxe a je vysoce konfigurovatelný. V terminálu dokonce podporuje diffing side-by-side!

Můžete spustit následující příkaz:

npm diff [email protected] [email protected] | delta --width $(tput cols) --side-by-side | less

To vypadá docela skvěle, když se mě zeptáte!

npm diff výstup 's je přesměrován do delta . side-by-side umožňuje srovnání ve dvou sloupcích a --width $(tput cols) definuje šířku porovnání vedle sebe jako šířku okna terminálu. A nakonec je vše zadáno do less protože jsem zvyklý procházet soubory s ním.

Tento příkaz krásně zapadá do mého pracovního postupu, ale je to hodně na psaní. Pojďme zlepšit pohodlí definováním vlastní funkce shellu.

Vlastní funkce rozdílu npm v mých dotfiles

Můj vlastní npm-diff je mnohem kratší a snadněji se píše. 🎉

# example: 
#   npm-diff web-vitals-element 1.0.0 1.0.1
function npm-diff() {
  npm diff --diff=$1@$2 --diff=$1@$3 | delta --width $(tput cols) | less
}

Šťastné diffing! 👋

Pokud se chcete dozvědět více o npm a Node.js, podívejte se na můj blog do sekce „Dnes jsem se naučil“ nebo se přihlaste k odběru mého týdenního zpravodaje o vývoji webu.