發(fā)布于:2021-01-15 09:36:38
0
148
0
如今,大多數(shù)前端項目將涉及某種NPM軟件包。有時,在瀏覽這些軟件包的文檔時,我會看到建議安裝這樣的軟件包。
yarn global add <package>
或像這樣。
npm install --global <package>
在這兩個示例中,軟件包都是全局安裝的。這意味著您可以<package>從系統(tǒng)上的任何目錄運(yùn)行命令。
這是可行的,但是全局安裝軟件包有一些缺點。
如果您與一組開發(fā)人員一起工作,則很難保證每個人都在運(yùn)行相同的程序包。
全局只能安裝一個版本。如果您有依賴于包的不同版本的不同項目,這將導(dǎo)致問題。
在本文中,我將向您展示三種不同的方法,您可以使用這些方法來運(yùn)行軟件包,而不必全局安裝它們。
快速設(shè)置
在本文中,我們將安裝一個名為Figlet的小型CLI工具,該工具可打印ASCII藝術(shù)文字。創(chuàng)建一個空目錄并導(dǎo)航到該目錄。然后添加以下package.json文件:
{ "name": "example", "license": "UNLICENSED", "dependencies": { "figlet-cli": "^0.1.0" } }
運(yùn)行yarn install或npm install(根據(jù)您的喜好)安裝軟件包。
注意:從現(xiàn)在開始,yarnandnpm命令完全相同,因此我僅列出yarn版本。
編輯$ PATH
像本地安裝軟件包一樣運(yùn)行本地安裝軟件包的第一種方法是編輯$PATH環(huán)境變量。該$PATH變量告訴您的系統(tǒng)在哪個目錄中查找可執(zhí)行文件。
Yarn和NPM的便捷功能之一是它們都包含一個.bin目錄,node_modules該目錄中包含指向所有已安裝的可執(zhí)行文件的符號鏈接。您可以輕松地將此文件夾添加到您的路徑。這里的竅門是修改您的目錄$PATH以包含本地 node_modules/.bin目錄。這將使您可以運(yùn)行任何本地NPM CLI工具,就好像它是全局安裝的一樣。
首先,您需要確定正在運(yùn)行哪個shell。為此,您可以在CLI中鍵入以下內(nèi)容。
echo $SHELL
如果您尚未配置自定義外殼,則可能為zsh或bash。如果是bash,請打開~/.bash_profile文件。如果是zsh,請打開~/.zshenv。如果所需文件不存在,請創(chuàng)建它。
接下來,將以下內(nèi)容添加到底部。請注意,這./node_modules/.bin是相對路徑。這意味著它將被附加到您當(dāng)前所在的任何目錄中。
export PATH="./node_modules/.bin:$PATH"
就是這樣!重新啟動外殼程序,導(dǎo)航到創(chuàng)建的目錄,然后嘗試運(yùn)行figlet。
figlet Aww yeah
你應(yīng)該看到這樣的東西。很整潔的,對吧?
_ __ __ _ / __ ____ __ / /__ __ _| |__ / _ / / / / / / V / _ / _` | '_ / ___ V V / V V / | | __/ (_| | | | | /_/ __/_/ _/_/ |_|___|__,_|_| |_|
紗線運(yùn)行工具
接下來是在中定義命令package.json。要添加命令,您要做的就是添加一個scripts部分,其中包含您的命令名稱和您要運(yùn)行的內(nèi)容。在此示例中,我添加了一個aww-yeah命令。
{ "name": "example", "license": "UNLICENSED", "dependencies": { "figlet-cli": "^0.1.0" }, "scripts": { "aww-yeah": "figlet Aww Yeah" } }
您可以使用運(yùn)行自定義命令yarn run <command>。大多數(shù)命令也可以縮短為yarn <command>。嘗試一下yarn aww-yeah!
您甚至可以將參數(shù)傳遞給自定義命令。嘗試將ascii下面列出的命令添加到 scripts并運(yùn)行yarn ascii Aww Yeah。
"scripts": { "aww-yeah": "figlet Aww Yeah", "ascii": "figlet" }
這是一個真實的例子。我是ESLint和Jest的忠實擁護(hù)者。我的幾乎所有項目都在其中定義了這些命令。
"scripts": { "lint": "eslint --max-warnings=0 .", "test": "jest" }
這很棒,因為我和我的團(tuán)隊都可以共享這些命令。它們也是自我記錄的,因此,如果某人是某個軟件包的新手,他們可以瀏覽一下package.json以查看可用的命令。
NPX
最后,我們有NPX,它是NPM的打包程序。這個方便的工具使您可以運(yùn)行CLI命令,而無需在本地安裝軟件包。這對于只需要運(yùn)行一次的工具(例如生成器)非常有用。
如果已安裝Node.js,則可能已在您的計算機(jī)上安裝了NPX。如果沒有,您可以使用進(jìn)行全局安裝yarn global add npx。
讓我們試一下figlet。
npx figlet Aww Yeah
那不是那么容易嗎?
有時,您會遇到NPX不知道如何查找的命令。我的Yeoman Generators存儲庫就是一個例子。在這種情況下,您需要通過-p標(biāo)記來告訴NPX哪個程序包顯式運(yùn)行。
npx -p yo -p @landonschropp/generator-eslint yo @landonschropp/eslint
全部完成!
這就是結(jié)果。現(xiàn)在,你可以在本地安裝任何NPM模塊,并像運(yùn)行全局模塊一樣運(yùn)行該命令。我個人經(jīng)常使用這三種方法。我希望你會發(fā)現(xiàn)它們像我一樣有用!