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á!