npm vydala verzi 8
jejich klienta CLI v prosinci a vydání vedlejší verze vypadá neokázale, ale obsahuje velmi užitečnou novou funkci - "přepisy".
Ekosystém JavaScriptu je v plamenech od doby, kdy se objevily Node.js a npm. Vždy je na všechno balíček, protože lidé publikovali YOLO, co se jim zlíbí. Je to pulsující a schopný ekosystém jako na divokém divokém západě. A samozřejmě, nespočet závislostí má své klady a zápory.
Líbí se mi, že mohu „prostě nainstalovat další balíček“, ale sdílím obavy z rostoucí složitosti projektu. Předpokládejme, že váš projekt spoléhá na jednu závislost, která závisí na jiné, která opět závisí na jiné. V takovém případě se může pokazit nespočet věcí, ale nejkritičtější je, když byla vaše závislost napadena nebo provedla něco škodlivého.
Přečtěte si více o nedávné příležitosti a node-ipc
incident v březnu 2022.
Přepisy npm vám umožňují ovládat závislosti vašich závislostí
"npm overrides" vám dává větší kontrolu nad tím, co je nainstalováno ve vašem stromu závislostí.
Řekněme, že jedna z vašich závislostí (1. úroveň) spoléhá na jinou závislost, která zahrnuje zastaralé jiné závislosti (2. úroveň). Neexistuje snadný způsob, jak ovládat vnořené verze závislostí v node_modules
jiný strom než větvení a oprava vaší závislosti první úrovně.
your-project
|_ some-module @1.0.0
|_ another-module-which-should-be-updated @1.0.0
Nyní můžete zadat overrides
vlastnost ve vašem package
k přepsání a vynucení vnořených verzí závislostí.
{
"overrides": {
"[email protected]": {
"foo": "1.0.0"
}
}
}
Nad bar
balíček s verzí 2
by bylo přepsáno foo
.
Naši přátelé ve Snyku sdíleli úryvek, který popisuje, jak přepsat balíček konkrétním rozsahem verzí. Přečtěte si následující package
konfigurace jako:
- přepsat každých
node-ipc
balíček větší než9
ale menší než.2 .1 10
. - přepsat každých
node-ipc
balíček větší než10
..1 .0
{
"overrides": {
"node-ipc@>9.2.1 <10": "9.2.1",
"node-ipc@>10.1.0": "10.1.0"
}
}
Nová funkce přepsání se hodí pro:
- opravit závislost se známým bezpečnostním problémem
- nahradit existující závislost forkem
- zajistěte, aby se všude používala stejná verze balíčku.
Je to takový vítaný doplněk; díky, npm! 🎉
Přečtěte si o tom více v dokumentech npm.