Zastavte globální instalaci balíčků

V současné době bude většina front-endových projektů zahrnovat nějaké balíčky NPM. Občas se mi při procházení dokumentace k těmto balíčkům zobrazí doporučení nainstalovat balíček jako je tento.

yarn global add <package>

Nebo takhle.

npm install --global <package>

V obou těchto příkladech je balíček nainstalován globálně . To znamená, že můžete spustit <package> příkaz z libovolného adresáře ve vašem systému.

Funguje to, ale globální instalace balíčků má několik nevýhod.

  • Pokud pracujete s týmem vývojářů, je těžké zaručit, že všichni používají stejný balíček.
  • Můžete mít globálně nainstalovanou pouze jednu verzi. To způsobuje problémy, pokud máte různé projekty, které se spoléhají na různé verze balíčku.

V tomto článku vám ukážu tři různé přístupy, které můžete použít ke spouštění balíčků, aniž byste je museli instalovat globálně.

Rychlé nastavení

Pro tento článek nainstalujeme malý nástroj CLI s názvem Figlet, který tiskne umělecký text ASCII. Vytvořte prázdný adresář a přejděte do něj. Poté přidejte package.json soubor s následujícím:

{
  "name": "example",
  "license": "UNLICENSED",
  "dependencies": {
    "figlet-cli": "^0.1.0"
  }
}

Spusťte yarn install nebo npm install (v závislosti na vašich preferencích) k instalaci balíčku.

Poznámka:yarn a npm příkazy jsou odsud stejné, takže uvedu pouze yarn verze.

Úprava $PATH

První způsob, jak spustit lokálně instalační balíčky, jako by byly nainstalované globálně, je úprava $PATH proměnná prostředí. $PATH proměnná říká vašemu systému, ve kterých adresářích má hledat spustitelné soubory.

Jednou z užitečných funkcí Yarn a NPM je, že obě obsahují .bin adresář uvnitř node_modules který obsahuje symbolické odkazy na všechny nainstalované spustitelné soubory. Tuto složku můžete snadno přidat do své cesty. Trik je v tom, že upravíte $PATH zahrnout místní node_modules/.bin adresář. To vám umožní spouštět jakýkoli místní nástroj NPM CLI, jako by byl nainstalován globálně.

Nejprve musíte určit, který shell používáte. Chcete-li to provést, můžete do CLI zadat následující.

echo $SHELL

Pokud jste nenakonfigurovali vlastní shell, bude to pravděpodobně zsh nebo bash . Pokud je to bash , otevřete ~/.bash_profile soubor. Pokud je to zsh , otevřete ~/.zshenv . Pokud soubor, který potřebujete, neexistuje, vytvořte jej.

Dále přidejte na dno následující. Všimněte si, že ./node_modules/.bin je příbuzný cesta. To znamená, že je připojen k libovolnému adresáři, ve kterém se právě nacházíte.

export PATH="./node_modules/.bin:$PATH"

A je to! Restartujte shell, přejděte do adresáře, který jste vytvořili, a zkuste spustit figlet .

figlet Aww yeah

Měli byste vidět něco takového. Docela pěkné, že?

     _                      __   __         _
    / \__      ____      __ \ \ / /__  __ _| |__
   / _ \ \ /\ / /\ \ /\ / /  \ V / _ \/ _` | '_ \
  / ___ \ V  V /  \ V  V /    | |  __/ (_| | | | |
 /_/   \_\_/\_/    \_/\_/     |_|\___|\__,_|_| |_|

Spuštění nástrojů s přízí

Další na řadě je definování příkazů ve vašem package.json . Chcete-li přidat příkaz, vše, co musíte udělat, je přidat scripts sekce s názvem vašeho příkazu a tím, co chcete spustit. V tomto příkladu jsem přidal aww-yeah příkaz.

{
  "name": "example",
  "license": "UNLICENSED",
  "dependencies": {
    "figlet-cli": "^0.1.0"
  },
  "scripts": {
    "aww-yeah": "figlet Aww Yeah"
  }
}

Svůj vlastní příkaz můžete spustit s yarn run <command> . Většinu příkazů lze také zkrátit na yarn <command> . Zkuste to s yarn aww-yeah !

Můžete dokonce předávat argumenty svým vlastním příkazům. Zkuste přidat ascii příkaz uvedený níže na váš scripts a běží yarn ascii Aww Yeah .

"scripts": {
  "aww-yeah": "figlet Aww Yeah",
  "ascii": "figlet"
}

Zde je příklad ze skutečného světa. Jsem velkým fanouškem ESLint i Jesta. Téměř všechny mé projekty mají tyto příkazy definované.

"scripts": {
  "lint": "eslint --max-warnings=0 .",
  "test": "jest"
}

To je skvělé, protože můj tým a já můžeme sdílet tyto příkazy. Jsou také samodokumentační, takže pokud je někdo v balíčku nový, může se podívat na package.json abyste viděli, které příkazy jsou k dispozici.

NPX

Konečně tu máme NPX, balíček runner od lidí z NPM. Tento šikovný nástroj vám umožňuje spouštět příkazy CLI bez lokálně nainstalovat balíček. To je skvělé pro nástroje, které stačí spustit jednou, jako jsou generátory.

NPX je pravděpodobně již na vašem počítači nainstalován, pokud jste nainstalovali Node.js. Pokud ne, můžete nainstalujte tento globálně s yarn global add npx .

Pojďme to zkusit s figlet .

npx figlet Aww Yeah

Nebylo to snadné?

Občas narazíte na příkaz, který NPX neví, jak najít. Příkladem je můj repozitář Yeoman Generators. V těchto případech budete muset NPX sdělit, který balíček má explicitně spustit s -p vlajka.

npx -p yo -p @landonschropp/generator-eslint yo @landonschropp/eslint

Vše hotovo!

A tady to máte. Nyní můžete lokálně nainstalovat libovolný modul NPM a spustit příkaz, jako by byl globální. Osobně všechny tři tyto metody používám pravidelně. Doufám, že je shledáte stejně užitečnými jako já!