NPM
npm 是一個node package installer commander tool。
在安裝了node.js環境下可以通過npm i xxx 來安裝你需要的node package到本地或者全局。
npm i webpack -G //全局安裝,路徑為 /usr/local/bin
npm i webpack -S -D //本地安裝, 安裝路徑為 ./node-modules/.bin/
NPX
npx會在安裝npm的時候一起安裝到本地。npx有兩個應用場景:
1、在沒有安裝package的情況下可以使用npx來運行,例如:
npx react-create-app init
// 會使用npm registry裏面的react-create-app創建一個react app在本地,如果用npm的話需要先install
npx webpack-dev-server --config webpack.dev.js
// 在沒有全局安裝webpack-dev-server 的時候,直接在命令行運行該包的命令是找不到的,會提示:
bash: webpack-dev-server: command not find
總結:
npm是一個node package安裝工具。
npx的作用是先檢查本地有沒有安裝某個package,如果沒有去遠程registry找,找到的話直接使用,不用下載到本地node-modules包裏面,這樣就能優化本地項目的大小,也可以避免安裝package到全局。
來自轉載鏈接:https://www.jianshu.com/p/50ce356e514a
npx用來解決全局命令行工具只能有一個的問題。
比如裝個webpack,使用的是4.x,可是已經裝了全局的1.x版本並且還要繼續使用,這個時候可以不裝在全局,用npx webpack代替webpack命令,互不干擾。
並且推薦這麼使用。
npx是npm後來加的一個功能,不是同一種東西。當執行npx xxx的時候,npx先看xxxz在$PATH裏有沒有,如果沒有,找當前目錄的node_modules裏有沒有,如果還是沒有,就安裝這個xxx 來執行。 npx也可以理解為少些package.json裏一個script而誕生的。
例如,如果運行npx some-package --no-install,意味着告訴npx ,它應該僅執行。some-package,如果之前未安裝,則不安裝。
示例:假設有一個名為my-package的軟件包,想要執行它。若沒有npx,要執行一個軟件包,必須通過其本地路徑運行來完成,如下所示:
./node_modules/.bin/my-package
或在 package.json文件的 scripts 中將其定義為單獨的腳本,如下所示:
{
"name":"XXX",
"version": "1.0.0",
"scripts": {
"my-package":"./node_modules/.bin/my-package"
}
}
然後使用npm run my-package運行。
現在,運用npx,只需運行npx my-package.,即可輕鬆實現此目的。