npm的使用解析

目錄

  • 1、npm的安裝
    • [1.1、查看npm版本或者是否安裝成功(npm -v)]
    • [1.2、npm修改全局包路徑及環(huán)境變量配置(npm config set)]
    • [1.3、查看npm的配置]
    • [1.4、安裝淘寶鏡像]
  • [2、npm 創(chuàng)建項目(npm init)]
  • [3、使用npm安裝模塊(npm install)]
    • [ 3.1、將包安裝并保存到生產(chǎn)環(huán)境或者開發(fā)環(huán)境(npm i 模塊名 --save、npm i 模塊名 -D)]
    • [ 3.2、本地安裝和全局安裝(npm i 模塊名 -g)]
    • [3.3、根據(jù)package.json文件安裝依賴]
    • [3.4、devDependencies 和dependencies 的區(qū)別]
  • [4、卸載模塊(npm uninstall)]
  • [5、查看已安裝的模塊(npm list)]
  • [6、更新模塊(npm update)]
  • [7、如何離線安裝 npm 全局包]
    • [7.1、直接復(fù)制所有文件]
    • [7.2、先復(fù)制文件再安裝方式]
  • [8、npx命令]
  • [9、nvm安裝使用]
    • [9.1、nvm安裝后vscode不識別node、npm等問題的解決辦法]

1、npm的安裝

NPM是隨同NodeJS一起安裝的包管理工具,只要安裝了Node.js,npm也安裝好了,node.js的安裝:http://www.runoob.com/nodejs/nodejs-install-setup.html

但是由于npm自身的更新頻率比Node.js高很多,所以通過上面的命令安裝的npm可能不是最新版本,可以通過下面的命令單獨(dú)更新npm

1.  npm install npm@latest -g

1.1、查看npm版本或者是否安裝成功(npm -v)

安裝完畢在命令行輸入以下命令測試是否安裝成功,正確會出現(xiàn)版本號

1.  npm -v

1.2、npm修改全局包路徑及環(huán)境變量配置(npm config set)

node安裝完后會自動也裝上了npm,npm的可執(zhí)行腳本跟node的可執(zhí)行程序在同一目錄下,如果node的已經(jīng)配置好了環(huán)境變量,那么就不用再配置 npm 的環(huán)境變量了(node 的環(huán)境變量應(yīng)該是自動配置好的)

通過以下命令可以查看 npm 全局包的安裝路徑:一般來說默認(rèn)是在 C 盤下

1.  npm config get prefix

(1)配置npm的全局模塊的本地存放路徑以及cache的路徑

例如我希望將以上兩個文件夾放在 E:\develop\nodeJs 目錄下,便在NodeJs下建立"node_global"及"node_cache"兩個文件夾。
首先在命令行輸入以下命令改變npm配置

1.  npm config set prefix "E:\develop\nodeJs\node_global"
2.  npm config set cache "E:\develop\nodeJs\node_cache"

然后在系統(tǒng)環(huán)境變量添加系統(tǒng)變量NODE_PATH,輸入路徑 E:\develop\nodeJs\node_global\node_modules,此后所安裝的模塊都會安裝到該路徑下。注意:這里在環(huán)境變量上配置的路徑是 node_global 下的 node_modules 。

此后我們可以在命令行輸入以下命令試著安裝express:

1.  npm install express -g 
//“-g”這個參數(shù)意思是裝到global目錄下,也就是上面設(shè)置 NODE_PATH 路徑:E:\develop\nodeJs\node_global\node_modules 里面

安裝完畢后可以看到E:\develop\nodeJs\node_global\node_modules已經(jīng)有express 包了

(2)配置全局安裝包的環(huán)境變量

在系統(tǒng)環(huán)境變量中 Path 中添加路徑:E:\develop\nodeJs\node_global 注意:此時添加的路徑是 node_global 的路徑,因為下載的全局包的可執(zhí)行腳本都放在這個路徑下,全局包的下載路徑和可執(zhí)行腳本的下載路徑是不一樣的。

這樣配置好了之后你下載的全局包就能在任何路徑下使用

參考:https://www.cnblogs.com/yominhi/p/7039795.html

1.3、查看npm的配置

1.  $ npm config list

1.4、安裝淘寶鏡像

1.  npm install -g cnpm --registry=https://registry.npm.taobao.org

2、npm 創(chuàng)建項目(npm init)

使用 npm 初始化項目,先創(chuàng)建一個文件夾,然后在該文件夾目錄下執(zhí)行 npm init 即可,npm 會自動創(chuàng)建一個 package.json 文件。

為區(qū)別普通文件夾及項目文件,人們習(xí)慣性規(guī)定, 項目文件應(yīng)該包含一個package.json 的文件。 package.json 文件里記錄項目的描述信息:項目作者、項目描述、項目依賴哪些包、具體包的版本信息、插件配置信息等等。

使用 npm init 指令創(chuàng)建項目描述文件 package.json。命令行里會以交互的形式讓你填一些項目的介紹信息,依次介紹如下:

  • name 項目名稱
  • version 項目的版本號
  • description 項目的描述信息
  • entry point 項目的入口文件 (項目被引入后,首先加載的文件)
  • test command 項目啟動時腳本命令
  • git repository 如果你有 Git 地址,可以將這個項目放到你的 Git 倉庫里
  • contributors -項目的其他貢獻(xiàn)者姓名。
  • dependencies 項目的依賴包列表。如果依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下。
  • keywords 關(guān)鍵詞
  • author 作者名字
  • license 項目要發(fā)行的時候需要的證書

也可以使用npm init - -yes命令直接使用默認(rèn)的配置來創(chuàng)建 package.json文件

3、使用npm安裝模塊(npm install)

執(zhí)行以下命令行

1.  npm install <package_name>  //模塊的名字
2.  npm install gulp@3.9.1  //安裝指定版本
3.  npm install webpack@latest //安裝最新版本

下載安裝好之后,所下載的模塊就放在了項目目錄下的 node_modules 目錄中,可以在代碼中直接通過 require('package_name') 引入。但此時并不會將模塊依賴寫入package.json中,運(yùn)行 npm install 初始化項目時也不會下載該模塊。

3.1、將包安裝并保存到生產(chǎn)環(huán)境或者開發(fā)環(huán)境(npm i 模塊名 --save、npm i 模塊名 -D)**

要安裝模塊并保存在package.json中應(yīng)使用以下命令行。下面兩中方法在運(yùn)行 npm install 初始化項目時,都會將模塊下載到項目目錄下。

安裝到生產(chǎn)環(huán)境:

1.  npm install vue --save //加入至package.json中的dependencies節(jié)點(diǎn),意思是生產(chǎn)環(huán)境所依賴的包
2.  npm i vue -S  //縮寫(是大寫的S)

安裝到開發(fā)環(huán)境:

1.  npm install vue --save-dev //加入至package.json中的evDependencies節(jié)點(diǎn),意思是開發(fā)環(huán)境所依賴的包
2.  npm i vue -D  //縮寫

3.2、本地安裝和全局安裝(npm i 模塊名 -g)

npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種,如果不指定則默認(rèn)是安裝在本地。

本地安裝將安裝包放在項目文件目錄下的 ./node_modules 文件夾中,如果沒有 node_modules 目錄,會自動生成 node_modules 目錄,可以通過 require() 來引入本地安裝的包。

全局安裝將安裝包放在 /usr/local 下或者你的 node 的安裝目錄,安裝后可以直接在命令行里使用。

1.  npm install <package_name>  // 本地安裝
2.  npm install <package_name>  -g //全局安裝 

3.3、根據(jù)package.json文件安裝依賴

我們在開發(fā)時會安裝各種各樣的包,當(dāng)把項目上傳到GitHub時不會把 node-modules 文件夾上傳上去,如果把項目克隆下來運(yùn)行就必須先安裝依賴。命令如下:

1.  npm install  //安裝所有package.json文件中有的包,包括指定的開發(fā)環(huán)境中依賴的包(即devDependencies 里面的包)和指定的生產(chǎn)環(huán)境中依賴的包(即dependencies 里面的包)
2.  npm install --production //只安裝指定的生產(chǎn)環(huán)境中依賴的包(即dependencies 里面的包)

3.4、devDependencies 和dependencies 的區(qū)別

參考:https://juejin.cn/post/7077520444332441630https://juejin.cn/post/7003998535985135652

大概意思就是,實際上自己開發(fā)的話寫哪個都問題不大,如果是在開發(fā)組件庫提供給他人使用時,才需要區(qū)分。

dependencies: 是項目運(yùn)行時的依賴,就是程序上線后仍然需要依賴,比如express, 我們程序就是用express 寫的,如果沒有express, 我們的程序根本無法運(yùn)行,更直白一點(diǎn),dependencies 就是我們在程序開發(fā)的過程中手動require的模塊。進(jìn)行express 開發(fā)時,server.js中,都會寫 var express = require(‘express’), 我們程序直接依賴,所以是dependencies.

devDependencies, 開發(fā)依賴,就是我們在開發(fā)過程中需要的依賴。比如babel, 它只負(fù)責(zé)轉(zhuǎn)換es6+ 到es5, 轉(zhuǎn)換完成后,我們只要轉(zhuǎn)換后的代碼,上線的時候,直接把轉(zhuǎn)換后的代碼部署上線,不需要bebal. 這就是開發(fā)依賴,只在開發(fā)時候起作用, 上線不需要。其實就是我們在使用webpack開發(fā)時,它配置文件里所有的依賴,都是開發(fā)依賴。

4、卸載模塊(npm uninstall)

1.  npm uninstall <package_name>
2.  npm uninstall -g <package_name>  //卸載全局模塊
3.  npm uninstall <package_name>  --save //卸載并從package.json中刪除

5、查看已安裝的模塊(npm list)

1.  npm list --depth=0  //查看該項目所安裝的模塊
2.  npm list --depth=0  -g //查看全局安裝的模塊
3.  npm list <packagename>  //查看是否安裝了該模塊

–depth 表示深度,我們使用的模塊會有依賴,深度為零的時候,不會顯示模塊所依賴的模塊

6、更新模塊(npm update)

1.  npm update <package_name>  
2.  npm update <package_name>  -g //更新全局安裝的模塊

7、如何離線安裝 npm 全局包

7.1、直接復(fù)制所有文件

先在外網(wǎng)中安裝好全局包,比如 lighthouse,通過以下命令找到全局包的安裝目錄

1.  npm config get prefix

比如目錄為:E:\develop\nodeJs\node_global_modules,此時在該目錄下找到以全局包命名的所有文件,和在該目錄下的 node_modules 目錄下找到以全局包命名即 lighthouse 的文件夾(注意,是在命令行輸出的目錄下的node_modules文件夾下)。將找到的文件和文件夾復(fù)制到內(nèi)網(wǎng)機(jī)器上 npm 全局安裝目錄的對應(yīng)位置上即可。

7.2、先復(fù)制文件再安裝方式

離線安裝 npm 全局包,比如在內(nèi)網(wǎng)中需要安裝一個全局包 lighthouse,步驟如下:

先在外網(wǎng)中安裝好全局包,通過以下命令找到全局包的安裝目錄

1.  npm config get prefix

比如目錄為:E:\develop\nodeJs\node_global_modules,此時在該目錄下的 node_modules 目錄下找到以全局包命名即 lighthouse 的文件夾。(注意:是在命令行輸出的目錄下的node_modules文件夾下找)。將找到的文件夾復(fù)制到內(nèi)網(wǎng)機(jī)器上(注意,最好不要直接復(fù)制在npm全局安裝包的目錄下)。

在復(fù)制后的文件夾的根目錄下執(zhí)行以下命令:

1.  npm install -g ./包名

3.  //比如
4.  npm install -g ./lighthouse

執(zhí)行以上命令后,會在 npm 全局包目錄下的 node_modules 文件夾下生成一個快捷方式,該快捷方式將會指向上述的文件夾。

8、npx命令

npx是npm的一個伴生命令,在npm5.2以上已經(jīng)內(nèi)置,可以直接使用,其它版本需要安裝使用。npx的主要功能是讓我們可以在命令行管理操作npm依賴。

npx的執(zhí)行順序機(jī)制是首先會自動檢查當(dāng)前項目中的可執(zhí)行依賴文件(即./node_modules/.bin下面的可用依賴),如果不存在就會去環(huán)境變量 path 中尋找,如果還沒有就會自動安裝,其安裝的依賴位于 node 安裝目錄中的 node_cache/_npx 之中,所以安裝的依賴只是臨時的。

它有如下幾點(diǎn)用途:

一、可以在命令行中直接執(zhí)行項目中安裝的依賴:

比如要在命令行中使用webpack。我們先安裝webpack: npm i webpack --save-dev

如果我們不使用 npx,此時有兩種方式可以調(diào)用 webpack:

1.  //第一種:根據(jù)路徑來執(zhí)行webpack的腳本:
2.  ./node_modules/.bin/webpack

4.  //第二種:使用 npm-run-script 的方式,在package.json的script字段里面執(zhí)行操作:
5.  首先在script字段定義命令:"script":  {"webpack":  "webpack"},然后在命令行執(zhí)行 npm run webpack

而使用npx就方便多了,可以直接這樣:

1.  npx webpack

二:可以一次性安裝臨時使用某個依賴

比如我們只是想要一次性使用 babel-cli 來編譯代碼,并不想要在項目中安裝它:

1.  npx babel-cli test.js --presets=es2015,stage2

參考:https://www.cnblogs.com/zhaozhipeng/p/8268563.html

9、nvm安裝使用

參考:http://www.itdecent.cn/p/13c0b3ca7c71

9.1、nvm安裝后vscode不識別node、npm等問題的解決辦法

參考:https://blog.csdn.net/qq_25337221/article/details/110925181

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容