npm與npx
npx
npx是一個工具,npm v5.2.0引入的一條命令(npx),一個npm包執行器,旨在提高從npm註冊表使用軟件包的體驗 ,npm使得它非常容易地安裝和管理託管在註冊表上的依賴項,npx使得使用CLI工具和其他託管在註冊表。它大大簡化了一些事情。
就像npm極大地提升了我們安裝和管理包依賴的體驗,在npm的基礎之上,npx讓npm包中的命令行工具和其他可執行文件在使用上變得更加簡單。它極大地簡化了我們之前使用純粹的npm時所需要的大量步驟。
舉例
使用create-react-app創建一個react項目。
npm:
npm install -g create-react-app
create-react-app my-app
npx:
npx create-react-app my-app
這條命令會臨時安裝 create-react-app 包,命令完成後create-react-app 會刪掉,不會出現在 global 中。下次再執行,還是會重新臨時安裝。
npx 會幫你執行依賴包裏的二進制文件。
舉例來說,之前我們可能會寫這樣的命令:
npm i -D webpack
./node_modules/.bin/webpack -v
如果你對 bash 比較熟,可能會寫成這樣:
npm i -D webpack
npm bin/webpack -v
有了 npx,你只需要這樣:
npm i -D webpack
npx webpack -v
也就是說 npx 會自動查找當前依賴包中的可執行文件,如果找不到,就會去 PATH 裏找。如果依然找不到,就會幫你安裝!
npx 甚至支持運行遠程倉庫的可執行文件:
npx github:piuccio/cowsay hello
再比如 npx http-server 可以一句話幫你開啓一個靜態服務器!(第一次運行會稍微慢一些)
npx http-server
指定node版本來運行npm scripts:
npx -p node@8 npm run build
主要特點:
1、臨時安裝可執行依賴包,不用全局安裝,不用擔心長期的污染。
2、可以執行依賴包中的命令,安裝完成自動運行。
3、自動加載node_modules中依賴包,不用指定$PATH。
4、可以指定node版本、命令的版本,解決了不同項目使用不同版本的命令的問題。
來自 http://itxw.net/article/7.html
一些簡寫:
npm install=npm i
在git clone項目的時候,項目文件中並沒有 node_modules文件夾,項目的依賴文件可能很大。直接執行,npm會根據package.json配置文件中的依賴配置下載安裝。
-global=-g,全局安裝,安裝後的包位於系統預設目錄下
–save=-S,安裝的包將寫入package.json裏面的dependencies,dependencies:生產環境需要依賴的庫
–save-dev=-D,安裝的包將寫入packege.json裏面的devDependencies,devdependencies:只有開發環境下需要依賴的庫