1. 程式人生 > >介紹npx:一個npm包執行器

介紹npx:一個npm包執行器

如果你把NPM升級到最新版本,,可能會發現,它會安裝一個新的包npx

npx是一個工具,旨在提高從npm登錄檔使用軟體包的體驗 ,npm使得它非常容易地安裝和管理託管在登錄檔上的依賴項,npx使得使用CLI工具和其他託管在登錄檔。它大大簡化了一些事情,到目前為止,如何安裝npx:

使用本地安裝的工具沒有 npm run-script

將cowsay作為本地devDependency進行安裝,並使用`$ npx cowsay`來執行它

在過去的幾年中,npm生態系統越來越多地將安裝工具作為專案本地化devDependencies,而不是要求使用者在全球安裝。這意味著,像工具mocha

gruntbower,曾經被全球主要安裝在系統上,現在可以對每個專案的基礎上管理自己的版本。這也意味著,所有你需要做的就是基於NPM-專案執行起來,以確保您有節點+ NPM您的系統上,克隆混帳回購協議,並做npm it執行installtest由於npm run-script新增本地二進位制檔案到路徑,這個工作很好!

不利之處在於,它不會快速/方便地以互動方式呼叫本地二進位制檔案。有幾種方法可以做到這一點,他們都對他們有些煩惱:你可以新增這些工具scripts,但是你需要記住通過使用傳遞引數--,你可以做一些shell技巧alias npmx=PATH=$(npm bin):$PATH

,或者你可以手動進行他們與 ./node_modules/.bin/mocha這些都是工作,但沒有一個是非常理想的。

npx給你我認為最好的解決方案:$ npx mocha您需要做的是使用本地安裝。如果你進行額外的步驟並配置shell自動回退(在下面的更多內容),那麼$ mocha在專案目錄中將為您做點竅門!

特別之處,如果呼叫已經安裝的二進位制檔案npx基本上沒有任何開銷 - 這足以將該工具的程式碼直接載入到當前執行的node程序中!這與這種事情一樣快,並且使它成為一個完全可以接受的指令碼編寫工具。

執行one-off commands

`$ npx create-react-app my-cool-new-app`安裝一個臨時的建立應答程式並呼叫它,而不會汙染全域性安裝或需要多個步驟!

你有沒有遇到過想要嘗試一些CLI工具的情況,但是要安裝一個全域性只是為了執行一次,這很煩人?npx也是很棒的。呼叫的npx <command>時間<command>不在你的$PATH意願,將自動從您的npm登錄檔中為該名稱安裝一個包,然後呼叫它。完成後,安裝的軟體包將不會在全域性範圍內任何地方,所以您不用擔心長期的汙染。

此功能也適用於其他包管理工具只有一次安裝,當你再次執行它們時,他們已經過時了,所以你最終不得不在每次要使用它們時執行安裝。

作為一種工具的維護者,我很喜歡這個功能,因為這意味著我可以把$ npx my-tool進入README.md的指令,而不是試圖讓人們在實際安裝它的障礙。坦白說,“哦,只需複製貼上這個命令,這是零承諾”對於不確定是否使用工具而言的使用者更可口。

執行不同Node.js版本的命令

`npx -p node @ <version> node -v`可以用來執行節點版本的一次性執行。

事實證明,有這個很酷的包通過里亞·斯圖爾特呼籲node對NPM登錄檔。這意味著你可以使用不同的節點版本,而不必使用版本管理器一樣很容易嘗試節點的命令nvmnaven所有你需要的是一個庫存[email protected]安裝!

-pnpx 選項允許您指定要安裝並新增到正在執行的軟體包$PATH,這意味著您可以進行有趣的操作,例如:$ npx -p [email protected] npm it安裝並測試當前的npm軟體包,就好像[email protected]全域性執行一樣我自己一直使用這個 - 甚至最近不得不用一個專案使用它,因為我的一個測試庫被破壞了[email protected]這是一個真正的救生員,我發現使用這種型別的用例比版本管理員更容易,我總是以某種方式找到打破或錯誤配置的方式。

npm run-script互動發展

`$ npx -p cowsay -p lolcatjs -c'echo“$ npm_package_name @ $ npm_package_version”| cowsay | lolcatjs'`安裝cowsay和lolcatjs,並使指令碼從執行指令碼訪問一堆“$ npm_”變數。

很多npm的使用者現在可以利用真正酷的功能它們不僅可以安排您的$PATH本地二進位制檔案可訪問,還可以新增一大堆環境變數,您可以在這些指令碼中訪問。你可以看到這些額外的變數是什麼$ npm run env | grep npm_

這可以使開發和測試執行指令碼變得棘手 - 這意味著即使使用諸如此類的技巧$(npm bin)/some-bin,在互動式工作的同時仍然無法訪問這些神奇的env var。

可是等等!npx還有一個技巧:當您使用該-c選項時,寫入string引數的指令碼將具有與常規執行指令碼相同的env變數的完全訪問許可權!甚至可以使用管道和多個命令進行單次npx呼叫!

與朋友和親人分享基於文字的指令碼!

使用gist.github.com分享各種實用程式指令碼變得很常見,而不是設定整個git repos,釋出新工具等。

使用npx,您可以進一步:因為npx接受npm本身所做的任何說明符,您可以建立一個人們可以直接使用單個命令呼叫的要點!

注意:保持安全!在執行這些操作時,請務必仔細閱讀,很像執行  .sh指令碼時一樣!

shell自動回退

將.zshrc中的npx自動回退意味著你可以在沒有引用npx的情況下執行`$ ember-cli @ latest ...`

FélixSaparelli補充說,這個令人敬畏的功能意味著對於許多這些用例,您甚至不需要npx直接撥打電話常規的npx使用和回退之間的主要區別是,後備不會安裝新軟體包,除非您使用[email protected]語法:安全網來防止潛在的危險排序。

設定自動回退是很簡單的:在npx文件中檢視用於當前shell的命令,將其新增到  .bashrc.zshrc/  .fishrc,然後重新啟動shell(或使用source或其他一些機制來重新整理shell)。

現在,您可以做一些事情$ [email protected] --version來嘗試不同版本的東西,如果您在一個npm專案中,$ mocha則會自動回到本地安裝的摩卡版本,前提是它尚未全球安裝。

DO It!

現在可以通過安裝或更新來獲得npx 或者如果你不想使用npm,你可以安裝獨立版本的npx它與其他軟體包管理器完全相容,因為任何npm使用僅適用於內部操作。哦,它有10種不同的語言,感謝來自世界各地的一大批早期採用者的貢獻,--help以及所有的系統訊息翻譯,並可以根據系統區域設定自動提供!還有一個repo與npx工作很好的事情的例子!

相關推薦

介紹npx一個npm執行

如果你把NPM升級到最新版本,,可能會發現,它會安裝一個新的包npx。 npx是一個工具,旨在提高從npm登錄檔使用軟體包的體驗 ,npm使得它非常容易地安裝和管理託管在登錄檔上的依賴項,npx使得使用CLI工具和其他託管在登錄檔。它大大簡化了一些事情,到目前為止,如何安

Ocelot.JwtAuthorize一個基於閘道的Jwt驗證

Ocelot作為基於.net core的API方關,有一個功能是統一驗證,它的作用是把沒有訪問許可權的請求擋在API閘道器外面,而不是到達API閘道器事端的API時才去驗證;之前我有一篇博文https://www.cnblogs.com/axzxs2001/p/8005084.html,作過說明,這篇博文說明

Unity編輯開發(三)實戰、開發一個AB編輯工具

前言 本系列將會從零開始開發一個輕量級的AB包編輯器工具(也就是打包或者管理AssetBundle的工具),完成以後,他的最終應用介面可能是如下這樣的: 介面詳解: 1、Create:建立一個新的空的AB包; 2、Rename:重新命名當前選中的AB

如何開發一個npm併發布

一、安裝nodejs 不多說了,網上教程多得是 二、建立自己的npm包 目錄結構 npm-test a.js b.js package.json 開發 為了簡單便於理解,就開發一個簡單地hello程式 a.js functi

日記俠一個簡單易執行的吸粉策略

你好,我是王剛,行走於網路江湖的“日記俠”。每天分享我的思考和經驗,希望身邊的人可以和我一樣天天寫日記,今天是王剛日記第642天。 想獲取使用者一定要有吸粉策略。 先想想你對於微課平臺是如何理解的? 我猜,很多人都是想靠這些平臺來賺錢的的。 起初,我也是這樣的想法

從零開始寫一個npm,一鍵生成react元件(偷懶==提高效率)

前言 最近寫專案開發新模組的時候,每次寫新模組的時候需要建立一個元件的時候(包含元件css,index.js,元件js),就只能會拷貝其他元件修改名稱 ,但是寫了1-2個後發現效率太低了,而且極容易出錯,所以自己寫一個npm包來減少工作量,下面就一步一步來建立

介紹Hrorm一個簡單的,宣告式的,經過型別檢查的ORM

一個問題 關於將Java程式碼中的模型與關係(SQL)資料庫中的模型連線的問題,已經有很多網路墨水洩露了。物件關係對映(ORM)的主題確實很豐富,您可能想要在應用程式和資料庫之間傳輸資訊的全部內容都是巨大的。許多ORM工具試圖覆蓋儘可能多的空間; 他們的設計和實現提供了很大的靈活性,並

一個坑底的問題一個jar在tomcat8.X的問題

1.專案開發的一個數據挖掘分析專案用到ansj分詞技術,測試環境jdk1.7,tomcat7; 2.部署到外網jdk1.8,tomcat8.x,啟動始終在啟動監聽階段無法載入詞庫。報以下資訊 org.ansj.util.MyStaticValue.<clinit&g

如何發布一個npm

com href dde 一個 步驟 -s 修改 怎麽 過程 npm包在現在前端開發中經常使用且便利,而我也是經常使用,而沒研究怎麽去發布npm。那如何發布npm包呢? 一、在npm的官網上註冊一個賬號登錄,https://www.npmjs.com/   註意此步驟記

從0到1釋出一個npm

從0到1釋出一個npm包 author: @TiffanysBear 最近在專案業務中有遇到一些問題,一些通用的方法或者封裝的模組在PC、WAP甚至是APP中都需要使用,但是對於業務的PC、WAP、APP往往是不同的業務、不同的程式碼庫中,儘管已經將公用的元件和方法抽離到各自公共common中,但是各個大

web專案Log4j日誌輸出路徑配置問題 問題描述一個web專案想在一個tomcat下執行多個例項(通過修改war名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的文

問題描述:一個web專案想在一個tomcat下執行多個例項(通過修改war包名稱的實現),然後每個例項都將日誌輸出到tomcat的logs目錄下例項名命名的資料夾下進行區分檢視每個例項日誌,要求通過儘可能少的改動配置檔案,最好修改例項名後可以不修改log4j的配置檔案。 實現分析:一般實現上面需求,需要在修

THULAC一個高效的中文詞法分析工具(z'z)

bsp 準確率 ext 效果 python3 nlp org 集成 的人 網址:http://thulac.thunlp.org/ THULAC(THU Lexical Analyzer for Chinese)由清華大學自然語言處理與社會人文計算實驗室研制推出的一套中文詞

Python開發【筆記】單線程下執行多個定時

自動 代碼 python 線程 timer ont -s 大量 過多 單線程多定時器   前言:公司業務需求,實例當中大量需要啟動定時器的操作;大家都知道python中的定時器用的是threading.Timer,每當啟動一個定時器時,程序內部起了一個線程,定時器觸發執行結

Google瀏覽器開發者工具CSSViewer(一個Css查看

自由 變化 安裝 lan 註意事項 bootstra demo 離線 一個 CSSViewer的簡介 CSSViewer是一款可以幫助用戶快速查看當前的網頁元素的CSS屬性的谷歌瀏覽器插件,在Chrome中安裝了CSSViewer插件以後,用戶就可以在設計網頁的時候,快速

9.Node.js 管理npm

poi error 控制 rip amp echo spec .json 安裝 npm 是 Node.js 官方提供的包管理工具, 用於 Node.js包的發布、傳播、依賴控制 安裝 express ==> 流行的基於Node.js的Web開發框架,可以快速地搭建一

管理rpm

運維天天要用的東西哦~~~包管理器ldd +二進制程序 查看二進制程序所依賴的庫文件 ldconfig 管理及查看本機裝載的庫文件 -p 查看一緩存的所有可用庫文件及文件路徑的映射關系配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf緩存文件:/etc/ld.so.

nuget服務搭建,以及如何發布一個Nuget

包含 odi table 應用 mage 源地址 項目 mic 方式 本文章主要介紹如何將本地dll打包成為一個Nuget包,並如何發布到自己的nuget服務器,示例代碼下載。章節如下 1. 本地dll如何打包,以及版本的更新 2. 在linux上搭建nuget.ser

BZOJ4196[NOI2015]軟件管理——題解

bzoj pushd 註意 軟件 com AR 依賴 ini cstring http://www.lydsy.com/JudgeOnline/problem.php?id=4196 https://www.luogu.org/problemnew/show/P2146

Ocelot.JwtAuthorize一個基於網關的Jwt驗證

auth context 分享圖片 mis aud readonly display view clas Ocelot作為基於.net core的API方關,有一個功能是統一驗證,它的作用是把沒有訪問權限的請求擋在API網關外面,而不是到達API網關事端的API時才去驗證;

第一篇博客一個雙色球遊戲 、以及個人介紹

面向 都是 ued 計算機專業 bean b- view 需要 第一次 一、雙色球小遊戲 雙色球類(6紅1藍): 1 package top.liaoyingpeng.bean; 2 3 import java.util.Arrays; 4 5 publi